WP Manifestindependent plugin directory
manifest / integrations / tosotm-platform

TOSOTM Platform self-updates

Centrale WordPress-plugin voor het TOSOTM-opticiens-platform. Sync met n8n, lokaal beeldbeheer, modulair opgebouwd.

by TRIC / The Other Side of The Moon · github.com/tijnvson/tosotm-platform · website

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/tijnvson/tosotm-platform/archive/refs/heads/main.zip

Ships its own WordPress updater (Plugin Update Checker), so new versions show up under Dashboard → Updates.

Centrale WordPress-plugin voor het TOSOTM-opticiens-platform.

Functionaliteit

  • Dagelijkse automatische sync met centrale n8n-endpoint, gespreid per site binnen 01:00–05:00 lokale tijd
  • Automatische update van campagne-content via JetEngine CPT (acties)
  • Lokaal beeldbeheer via Media Library (change-detection op URL)
  • REST-endpoint voor spoedsyncs: POST /wp-json/tosotm/v1/sync-now
  • Settings-pagina voor site token, customer ID en sync-trigger secret
  • Plugin Update Checker via GitHub Releases

Installatie

  1. Upload de plugin-map naar /wp-content/plugins/tosotm-platform/.
  2. Activeer de plugin in het WordPress-beheerder.
  3. Ga naar Instellingen → TOSOTM Platform en vul in:
    • Site Token — uniek per opticien, verstrekt door TRIC.
    • Customer ID — numeriek ID, verstrekt door TRIC.
    • Sync-trigger secret — willekeurige string (bijv. gegenereerd met openssl rand -hex 32). Laat leeg om het REST-endpoint uit te schakelen.

Automatische sync-planning

De plugin plant dagelijks één sync-run per site. Het tijdstip wordt deterministisch berekend uit home_url():

offset = hexdec(md5(home_url())[0..5]) % 14400   // [0, 14399] seconden
tijdstip = lokale 01:00 + offset seconden

Het venster is 01:00–05:00 lokale tijd. Elke site krijgt automatisch een uniek slot — er is geen centrale lijst van sites nodig.

Bij een update naar een nieuwe versie migreert de plugin het schema transparant bij de eerste paginaload, zonder handmatige heractivatie.

Server-cron instellen (OPS, per site)

WordPress' ingebouwde pseudo-cron vuurt alleen bij paginabezoek. Op drukke sites is dat voldoende; op lichte sites kan een nachtelijk venster worden gemist.

Aanbevolen aanpak: zet DISABLE_WP_CRON aan en gebruik een echte server-cron.

1. wp-config.php

define( 'DISABLE_WP_CRON', true );

2. Server-cron (crontab of hosting-panel)

Met WP-CLI (aanbevolen):

0 * * * * wp --path=/var/www/html cron event run --due-now --quiet

Of met wget:

0 * * * * wget -q -O /dev/null "https://example-opticien.nl/wp-cron.php?doing_wp_cron"

Frequentie: elk uur is ruim voldoende. De spreiding zit in de berekende tijdstippen, niet in de server-cron-frequentie. Er is geen centrale sitelijst nodig — elke site beheert zijn eigen cron.

Spoedsyncs (REST-endpoint)

POST /wp-json/tosotm/v1/sync-now
X-TOSOTM-Trigger-Secret: <trigger_secret>
  • Retourneert 200 + JSON bij succes, 401 bij ontbrekende/foute secret, 500 bij sync-fout.
  • Het endpoint is uitgeschakeld zolang de trigger secret leeg is in de instellingen.

Voorbeeld met curl:

curl -s -X POST \
  -H "X-TOSOTM-Trigger-Secret: <jouw-secret>" \
  https://example-opticien.nl/wp-json/tosotm/v1/sync-now

Changelog

1.1.0

  • Dagelijkse sync gepland op deterministisch berekend slot (01:00–05:00 lokaal) afgeleid van home_url() — geen centrale sitelijst nodig.
  • Migratie-mechanisme: bestaande installs schakelen automatisch over na de update.
  • Gedeelde sync-kern (execute_sync()): cron- en handmatige sync schrijven nu beiden last_sync, zodat de admin-UI ook cron-runs toont.
  • REST-endpoint POST /wp-json/tosotm/v1/sync-now voor externe spoedsyncs.
  • Robuustere deactivatie via wp_clear_scheduled_hook.
  • Debug-banner ("plugin geladen") verwijderd.

1.0.2

  • Sync-API gericht op self-hosted n8n.

1.0.1 / 1.0.0

  • Initiële release.