Aanmeldformulieren
Integraties met andere formulierplugins
Wynko’s eigen aanmeldformulier is niet de enige manier om iemand aan te melden voor een Laposta-lijst. Wynko → Integraties toont optionele bridges waarmee een formulier uit een andere plugin via Wynko naar Laposta kan schrijven — met hergebruik van je API-sleutel, je lijst- en velddefinities en je activiteitenlog, zonder dat die andere plugin iets van Laposta hoeft te weten.
Elke integratie wordt uitgeschakeld geleverd. Een site die er geen gebruikt, betaalt er niets voor. Schakel er een in via het Integraties-scherm; een integratie kan alleen worden geactiveerd zolang de plugin waaraan hij koppelt ook actief is.
De gebundelde integraties
Er komen er twee met Wynko mee:
- Contact Form 7 — leest een native Contact Form 7-checkboxtag,
[checkbox wynko-optin-{list_id} …], die je in de eigen template van je formulier plakt. Een inzending met dat vakje aangevinkt wordt aangemeld voor de lijst die de tag noemt. - HTML Forms — hetzelfde idee voor de HTML Forms-plugin, die geen getypt tagsysteem heeft, dus plak je in plaats daarvan een klein blok HTML.
Voor beide worden Laposta-velden die de lijst als verplicht markeert
geleverd door formuliervelden die je exact wynko-{veldnaam} noemt. Het
Instellingen-scherm van elke integratie toont je de precieze tag of
HTML om te plakken, per lijst, zodat je de namen niet zelf hoeft uit te
zoeken.
Omdat deze bridges aanhaken op het eigen formulier van een andere plugin, lopen ze niet door Wynko’s aanmeldpijplijn — er is geen Wynko-honeypot, geen post-inzendredirect, en de rate-limit-limiet per formulier geldt niet. De limiet per bezoeker wel, geteld op het IP-adres dat die andere plugin bepaalde. Zie Instellingenoverzicht voor de rate limits.
Als de plugin waaraan hij koppelt verdwijnt
Deactiveer je Contact Form 7 (of HTML Forms) terwijl de Wynko-integratie
nog aanstaat, dan merkt Wynko dat bij de volgende paginaweergave,
schakelt de integratie zelf weer uit — “aan” laten zou verkeerd
weergeven wat er draait — legt een fout vast in het
activiteitenlog (zodat er een
kritieke e-mailmelding uitgaat als je die aan
hebt; een formulier kan net stil zijn geworden), en toont een eenmalige
adminmelding met de naam van de integratie.
De Deactiveren-link op het Integraties-scherm waarschuwt je ook, in het bevestigingsvenster, over het concrete dat stopt met werken — voor de Contact Form 7-bridge dat een al in een formulier geplakt opt-invakje niemand meer aanmeldt.
Integraties van andere ontwikkelaars
De bridge-lijst is open: elke plugin of thema kan zijn eigen integratie registreren, en die verschijnt dan op hetzelfde scherm met eigen naam, omschrijving, versie en documentatielink. Integraties die niet door Wynko worden geleverd, worden ontwikkeld en ondersteund door hun eigen auteurs — voor een probleem ermee, neem contact op met die ontwikkelaar.
Je eigen integratie bouwen
Een integratie is een PHP-klasse die Wynko\Integrations\Integration
implementeert en wordt toegevoegd aan het filter
wynko_register_integrations (beschikbaar sinds Wynko 1.2). Wynko toont
hem dan op Wynko → Integraties, bewaart zijn aan/uit-stand, en roept
zijn boot()-methode één keer aan — alleen wanneer een beheerder hem
heeft ingeschakeld én zijn is_available()-controle slaagt.
Het contract
Implementeer al deze methoden:
| Methode | Retourneert | Waarvoor |
|---|---|---|
slug() |
string | Stabiele identifier, bijv. mijn-formulierplugin. Het is de sleutel waaronder je aan/uit-stand wordt bewaard, dus verander hem nooit tussen releases. |
name() |
string | Weergavenaam in de Integraties-lijst. |
description() |
string | Eén zin onder de naam. |
author() |
string | Je naam of pluginnaam voor de kolom “Geleverd door”. '' markeert hem als gebundeld met Wynko. |
author_uri() |
string | Waar author() naartoe linkt. '' toont het als platte tekst. |
documentation_uri() |
string | Waar “Documentatie bekijken” naartoe linkt. '' toont geen link. |
version() |
string | De versie van jouw plugin of thema — niet die van Wynko. |
is_available() |
bool | Of datgene waaraan je koppelt (meestal een andere plugin) op dit moment actief is. |
boot() |
void | Haak hier je eigen hooks aan. Wordt één keer aangeroepen, alleen wanneer ingeschakeld en beschikbaar. |
render_settings() |
void | Print je instellingenscherm, of doe niets als je er geen hebt. Alles wat je hier echo’t moet je zelf escapen, en elke actie die het indient moet je zelf beschermen met een capability-check en een nonce. |
deactivation_warning() |
string | Eén zin die noemt wat stopt met werken als een beheerder je uitschakelt. '' valt terug op een generieke waarschuwing. |
name(), description(), author(), version() en
deactivation_warning() worden altijd escaped weergegeven door Wynko,
wat ze ook retourneren.
Registreren
Jouw plugin hangt af van Wynko, nooit andersom, dus je registratie moet niets doen — geen fatale fout — op een site waar Wynko niet actief is:
add_action( 'plugins_loaded', function () {
if ( ! interface_exists( '\Wynko\Integrations\Integration' ) ) {
return;
}
add_filter( 'wynko_register_integrations', function ( array $integrations ) {
$integrations[] = new My_Form_Plugin_Wynko_Integration();
return $integrations;
} );
} );
Naar Laposta schrijven
Verstuur vanuit je boot()-hooks een abonnee met
Wynko\Api\Subscribers::create( $list_id, $email, $ip, $source_url, $custom_fields, $skip_doi )
— dat hergebruikt Wynko’s API-sleutelresolutie, transport en
foutafhandeling. Het filter wynko_subscriber_data (zie
Hooks en filters) wordt bij elke zo’n
aanroep geactiveerd als jij of anderen de payload moeten aanpassen.
Twee gedragingen om rekening mee te houden
- Beschikbaarheid en aan/uit-stand zijn los van elkaar. Wynko roept
boot()alleen aan wanneer beide ja zeggen. Verdwijnt je dependency terwijl een beheerder je aan had staan, dan zet Wynko de bewaarde instelling zelf weer uit, logt dit, en toont een eenmalige melding — zodat je nooit een “ingeschakeld maar niet beschikbaar”-toestand hoeft af te handelen. - Rate limiting. Een bridge-inzending valt onder de IP-limiet per
bezoeker (
Wynko\Throttle::allows_ip()) maar niet onder de limiet per formulier, die op Wynko’s eigen formulieren is toegespitst.
De gebundelde klassen ContactForm7Integration en HtmlFormsIntegration
in de plugin-broncode zijn volledige, werkende voorbeelden.