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
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.zipShips 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
- Upload de plugin-map naar
/wp-content/plugins/tosotm-platform/. - Activeer de plugin in het WordPress-beheerder.
- 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 beidenlast_sync, zodat de admin-UI ook cron-runs toont. - REST-endpoint
POST /wp-json/tosotm/v1/sync-nowvoor 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.