Zum Inhalt springen
Developer

WordPress-Plugin vynst Sync

Veranstaltungen, Standorte, Nachrichten und Medien aus vynst als WordPress-Beiträge, täglich abgeglichen und bei Änderungen sofort per Webhook aktualisiert.

vynst Sync holt Inhalte aus vynst (inwendo ERP) in eure WordPress-Seite. Jede Veranstaltung, jeder Standort, jede Nachricht und jede Mediengruppe wird ein normaler WordPress-Beitrag. Euer Theme, eure Suche und eure SEO-Plugins arbeiten damit wie mit allen anderen Beiträgen.

Was übernommen wird

Inhalt in vynst wird in WordPress zu
Veranstaltungen Beiträgen vom Typ „vynst Events“ oder einem Beitragstyp eurer Wahl
Standorte Beiträgen vom Typ „vynst Locations“ oder einem eigenen Typ
Nachrichten Beiträgen vom Typ „vynst News“ mit dem Veröffentlichungsdatum aus vynst
Mediengruppen und Dateien Beiträgen vom Typ „vynst Media“, Dateien als Unterseiten oder als Liste an der Gruppe
Kategorien Begriffen der Taxonomie „vynst Kategorie“ (iw_vynst_unified_category)
Schlagwörter WordPress-Schlagwörtern

Titel, Beschreibung, Bild, Kategorien und Schlagwörter landen direkt am Beitrag. Alle übrigen Felder liegen vollständig im Metafeld erp_all_data, die ID aus vynst in erp_id. Euer Theme kann so jedes Feld anzeigen, etwa Termine, Preise oder Adresse.

Das Plugin liest nur öffentlich sichtbare Inhalte. Was in vynst intern ist, kommt nicht auf die Website. Es schreibt nichts nach vynst zurück.

Voraussetzungen

  • WordPress 5.0 oder neuer, PHP 8.1 oder neuer
  • das Basis-Plugin iw-wp-utils ab Version 1.8.1. Fehlt es, startet vynst Sync ohne Hinweis nicht.
  • ein Lizenzschlüssel von inwendo. Plugins und Schlüssel bekommt ihr über den Support.

Einrichten

  1. iw-wp-utils und vynst Sync hochladen und aktivieren.
  2. Im Menü vynst Sync → Settings im Tab General den License Key eintragen.
  3. Bei vynst API URL die Adresse eurer Installation eintragen, zum Beispiel verein.iw-erp.de. https:// ergänzt das Plugin selbst.
  4. Speichern. Der Verbindungsstatus zeigt an, ob vynst erreichbar ist.
  5. In den Tabs Events, Locations, News articles und Media jeweils bei Local import post type wählen, wohin importiert wird: den mitgelieferten Typ, einen anderen öffentlichen Beitragstyp oder „No local import“.
  6. Mit Sync events, Sync locations und so weiter den ersten Abgleich starten.

Achtung: Wechselt ihr später den Ziel-Beitragstyp, löscht das Plugin alle bisher importierten Beiträge im alten Typ endgültig. Eigene Ergänzungen an diesen Beiträgen gehen dabei verloren.

Medien

Im Tab Media stellt ihr zusätzlich ein:

Einstellung Werte
Import mode nur Gruppen (Dateien als Liste an der Gruppe) oder Gruppen und Dateien als eigene Beiträge
Import source nur öffentliche Gruppen, nur private Gruppen oder beides
Private Media Groups einzelne nicht öffentliche Gruppen über ihren Token hinzufügen. Die Gruppe kommt beim nächsten Abgleich der Medien.
Media file URL Pfad, über den Dateien ausgeliefert werden. Der Standard passt fast immer.

Wann abgeglichen wird

Auslöser Was passiert
Täglich gegen 3 Uhr Alle aktivierten Bereiche werden vollständig abgeglichen. Was es in vynst nicht mehr gibt, wird in WordPress gelöscht.
Webhook aus vynst Nur der geänderte Datensatz wird sofort neu geholt, angelegt oder gelöscht.
Buttons in den Einstellungen Vollständiger Abgleich eines Bereichs auf Knopfdruck.

Der tägliche Lauf nutzt WP-Cron. Auf Seiten mit wenig Besuch läuft er nur zuverlässig, wenn euer Hoster WP-Cron regelmäßig per System-Cron anstößt.

Gelöscht wird nur, wenn die Liste aus vynst nachweislich vollständig geladen wurde. Bricht die Verbindung ab, bleibt alles stehen.

Sofort aktualisieren mit Webhooks

Damit Änderungen nicht bis zum nächsten Morgen warten, meldet vynst sie per Webhook an WordPress. Das Plugin stellt dafür vier Adressen bereit:

Inhalt referenceClassName Adresse in WordPress
Veranstaltungen BaseEvent https://eure-website.de/wp-json/iw-vynst-sync/v1/update_events
Standorte BaseLocation …/wp-json/iw-vynst-sync/v1/update_locations
Nachrichten MediaNewsArticle …/wp-json/iw-vynst-sync/v1/update_news-articles
Mediengruppen MediaGroup …/wp-json/iw-vynst-sync/v1/update_media

Legt in vynst je Inhalt einen Webhook an. Den Plugin Token aus dem Tab General tragt ihr als notificationClientToken ein, vynst schickt ihn dann im Header X-IW-Webhook-Token mit. Lasst databaseAction leer, dann meldet vynst Anlegen, Ändern und Löschen.

curl --request POST https://verein.iw-erp.de/api/dw/webhook.json \
  --header 'x-iw-jwt-token: <TOKEN>' \
  --header 'content-type: application/json' \
  --data '{
    "data": {
      "name": "Veranstaltungen an die Website",
      "referenceClassName": "BaseEvent",
      "notificationType": "HTTP_POST",
      "notificationUrl": "https://eure-website.de/wp-json/iw-vynst-sync/v1/update_events",
      "notificationClientToken": "<Plugin Token aus WordPress>"
    }
  }'

Das Plugin antwortet mit 200 und {"message": "Success", …}. Ein falscher Token ergibt 401, ein Datensatz ohne ID 400. Über den Debug-Modus des Webhooks seht ihr Anfrage und Antwort im Protokoll von vynst.

Ein Webhook aktualisiert nur den einen Datensatz. Neue Kategorien kommen erst mit dem nächsten vollständigen Abgleich. Legt ihr eine neue Kategorie an und nutzt sie gleich, startet den Abgleich des Bereichs einmal per Button.

Im Theme verwenden

Wählt ihr die mitgelieferten Beitragstypen, haben die Beiträge die Archive /vynst-events/, /vynst-locations/, /vynst-news/ und /vynst-media/, die Kategorien liegen unter /vynst-category/. Mit Hide Taxonomy Page blendet ihr die Kategorie-Seiten aus.

Für eigene Templates gibt es eine kleine PHP-Schnittstelle:

// Alle Veranstaltungen, je mit den vollständigen Daten aus vynst
$events = IwVynstItem::getAllEvents();

// Eine Veranstaltung über ihre ID in vynst ('wp' für die Beitrags-ID)
$event = IwVynstItem::getEventById('523', 'erp');

// Ein einzelnes Feld aus den vollständigen Daten, in der aktuellen Sprache
$title = IwVynstItem::getTranslatedFieldByPostId(get_the_ID(), 'public_title');

Mit WPML liefert getTranslatedField die Übersetzung aus vynst, sonst Englisch, sonst Deutsch.

Gut zu wissen

  • Öffentlich heißt öffentlich: Was in vynst für die Website sichtbar ist, steht danach auch in der WordPress-Datenbank und im Metafeld erp_all_data.
  • Kategorien: Schaltet ihr alle Importe ab, entfernt das Plugin auch alle Begriffe der vynst-Kategorie.
  • Eigene Änderungen an importierten Beiträgen überschreibt der nächste Abgleich. Pflegt Inhalte in vynst.

Mehr für WordPress

vynst Sync bringt die Daten auf eure Website, die Darstellung übernimmt euer Theme. Braucht ihr mehr, etwa Standortkarten, Downloadbereiche, Formulare, die direkt in vynst schreiben, oder eigene Layouts, entwickelt inwendo das passend für euch. Fragt dafür ein individuelles Angebot beim Support an.