Warum ich das mache
In vielen KMU-Projekten passiert im WordPress-Frontend mehr, als man denkt: neue Anfragen, Anmeldungen, Uploads.
Die interne IT will bei bestimmten Dingen informiert werden. Automatisch, zeitnah, ohne doppelte Mails.
Access eignet sich gut als Zentrale fĂŒr solche Trigger – vor allem bei bestehenden Access-Anwendungen.
Ăberblick: Der Ablauf
- WordPress-Ereignisse erfassen (API oder Push)
- Rohdaten regelmĂ€Ăig nach Access holen
- Regeln definieren (SQL)
- Benachrichtigung per E-Mail auslösen (VBA)
1. WordPress-Ereignisse erfassen
Variante A: REST API zyklisch abrufen
Beispiel: neue EintrÀge in Gravity Forms, WPForms oder CPTs.
Function LadeJson(URL As String) As String
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", URL, False
http.Send
If http.Status = 200 Then
LadeJson = http.ResponseText
Else
LadeJson = ""
End If
End Function
SpĂ€ter per Timer oder Autoexec-Makro ausfĂŒhren.
Variante B: Push aus WordPress per Webhook
Du richtest in WordPress einen kleinen Hook ein:
add_action('wpforms_process_complete', function($fields, $entry, $form_data) {
$data = [
'form' => $form_data['id'],
'email' => $fields[1]['value'],
'timestamp' => time()
];
wp_remote_post('https://dein-server.de/access-endpunkt.php', [
'body' => json_encode($data),
'headers' => ['Content-Type' => 'application/json']
]);
}, 10, 3);
Dann speicherst Du die Daten serverseitig z. B. als CSV oder in einer MySQL-Logtabelle. Access kann sie per ODBC regelmĂ€Ăig holen.
2. WordPress-Rohdaten nach Access holen
Beispiel: Daten aus wp_form_log
ĂŒber ODBC laden
INSERT INTO wp_import_formlog (form_id, email, zeitpunkt)
SELECT form, email, FROM_UNIXTIME(timestamp)
FROM [ODBC;DSN=wordpress;].wp_form_log
WHERE id > (SELECT Nz(Max(wp_id), 0) FROM wp_import_formlog);
Achte auf Zeitstempel und ID als Fortschrittsmarker.
3. Regeln definieren (SQL)
Du willst nur in bestimmten FĂ€llen benachrichtigen.
Beispiel: E-Mail-Adresse endet auf @firma.de
UND es wurde ein bestimmtes Formular abgeschickt.
SELECT *
FROM wp_import_formlog
WHERE email LIKE '*@firma.de'
AND form_id IN (3, 7)
AND Notifiziert = False;
Regeln kannst Du flexibel gestalten:
Regel-ID | Bedingung_SQL |
---|---|
1 | email LIKE "*@firma.de" |
2 | form_id = 5 AND zeitpunkt > Date() - 1 |
3 | InStr(email, "chef") > 0 AND form_id IN (2,3) |
Du kannst sie sogar dynamisch in VBA prĂŒfen (DAO oder Eval).
4. Benachrichtigung auslösen (VBA)
Sub SendeBenachrichtigungen()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim olApp As Object, olMail As Object
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM qry_benachrichtigung_kandidaten", dbOpenDynaset)
Set olApp = CreateObject("Outlook.Application")
Do Until rs.EOF
Set olMail = olApp.CreateItem(0)
olMail.To = "it@firma.de"
olMail.Subject = "Neue WordPress-Aktion"
olMail.Body = "Formular-ID: " & rs!form_id & vbCrLf & _
"E-Mail: " & rs!email & vbCrLf & _
"Zeit: " & rs!zeitpunkt
olMail.Send
rs.Edit
rs!Notifiziert = True
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set olMail = Nothing
Set olApp = Nothing
End Sub
TĂ€glicher Aufruf per Autoexec
-Makro oder Windows-Task mit /x
-Startparameter.
Mein Setup im Alltag
- WordPress schreibt ins Log (einfache Tabelle)
- Access zieht minĂŒtlich neue EintrĂ€ge
- SQL prĂŒft Regeln
- VBA schickt Mails, markiert als erledigt
Ich nutze dafĂŒr eine kleine Tabelle tblBenachrichtigungStatus
mit Timestamp, Mailadresse, Regel-ID.
So vermeide ich Dopplungen.
Keine Antworten