Draait je site op WordPress? Dan is de vraag die we het vaakst krijgen: "is er een plugin?" Het eerlijke antwoord is nee. Er is geen MijnEvent-plugin voor WordPress, en er komt er voorlopig ook geen — omdat je hem niet nodig hebt. Wat er wél is: een embedcode van twee regels die in elke WordPress-site werkt, en een read-only API voor wie zijn agenda zelf wil bouwen. Dit artikel laat zien hoe je dat precies doet, inclusief de dingen die in WordPress mis kunnen gaan.
Waarom geen plugin?
Een plugin moet je installeren, bijwerken en compatibel houden met je thema, je pagebuilder en de WordPress-versie van volgend jaar. Alles wat een plugin zou doen — de ticketverkoop op je pagina zetten — doet de embedcode ook, zonder dat er iets in je WordPress-installatie hoeft te draaien. Verhuis je ooit naar een ander CMS, dan verhuist diezelfde code mee. Minder onderdelen, minder onderhoud.
Stap 1: de code ophalen in beheer
Ga in je beheer naar Integraties. Kies bij Tickets op je eigen website het event, en je krijgt twee varianten:
De script-embed (aanbevolen). Eén div plus één scriptregel:
<div data-mijnevent-event="zomerfeest-2026"></div>
<script src="https://jouwclub.mijnevent.nl/embed.js" async></script>
Het script plaatst de widget en meet de inhoud continu: wordt de ticketlijst langer of klapt de bestelstap open, dan groeit het kader mee. Geen tweede scrollbalk, geen afgeknipte inhoud. Meerdere events op één pagina? Plaats meerdere div's; één scriptregel onderaan bedient ze allemaal.
De iframe (terugvaloptie). Werkt zonder script, maar je zet de hoogte zelf vast:
<iframe src="https://jouwclub.mijnevent.nl/widget/zomerfeest-2026"
width="100%" height="640" frameborder="0"
style="border:none;border-radius:12px;" title="Tickets"></iframe>
Bij een lange ticketlijst of de bestelstap wordt de inhoud dan afgeknipt, of je houdt witruimte over. Gebruik dit alleen als je geen script kwijt kunt.
Stap 2: de code in WordPress plakken
Er zijn drie plekken, afhankelijk van hoe je pagina's bouwt.
Blokeditor (Gutenberg). Klik op +, zoek het blok Aangepaste HTML en plak de code in het tekstvak. Klik op Voorbeeld om te controleren of de widget laadt; in de editor zelf zie je alleen de code. Sla op en bekijk de pagina.
Elementor. Sleep de widget HTML naar de plek waar de tickets moeten komen en plak de code in het veld. De widget verschijnt pas in de voorvertoning of op de live pagina, niet in de bouwmodus.
Klassieke editor. Schakel rechtsboven van Visueel naar Tekst (de HTML-modus) en plak de code daar. Ga daarna niet meer terug naar het tabblad Visueel voordat je opslaat — daarover hieronder meer.
Als de widget niet verschijnt
Vier oorzaken verklaren bijna alles wat er misgaat.
- De visuele editor heeft je script gestript. WordPress' visuele modus schoont HTML op en verwijdert
<script>-tags, zeker bij accounts zonder volledige HTML-rechten en op multisite-installaties. Werk in het blok Aangepaste HTML of in de HTML-modus, en controleer na het opslaan of de scriptregel er nog staat. - Een beveiligingsplug-in blokkeert het. Firewall- en hardening-plug-ins filteren soms externe scripts, of een Content-Security-Policy staat alleen scripts van je eigen domein toe. Zet in dat geval je MijnEvent-subdomein op de toegestane lijst, of gebruik de iframe-variant — daar zit geen script in.
- Een cachingplug-in serveert een oude pagina. Leeg de cache van de plug-in én van je browser na het plakken. Let op: alleen de pagina wordt gecachet. De inhoud van de widget wordt live bij MijnEvent opgehaald, dus prijzen en beschikbaarheid blijven actueel, ook op een agressief gecachete pagina.
- De pagina staat op HTTP. Een moderne browser weigert een iframe of script van een
https-bron in eenhttp-pagina te mengen. Zet je site op HTTPS — dat wil je sowieso.
Afrekenen gebeurt buiten de widget
Bestellen — ticketsoorten kiezen, aantal, naam en e-mailadres — doet de bezoeker in de widget op jouw pagina. Voor de betaling gaat het buiten het kader: de betaalpagina van Mollie stuurt headers mee die framen verbieden, dus als we hem in de iframe zouden laden, kreeg de bezoeker midden in zijn betaling een lege pagina.
In de praktijk merk je daar dit van: bij de ticketwidget en bij een module-etalage neemt de betaalpagina het hoofdvenster over. Lukt dat niet, bijvoorbeeld door een strenge iframe-sandbox, dan verschijnt er een knop naar de betaalpagina. Na betaling komt de bezoeker op de bevestigingspagina van MijnEvent, met een knop terug naar jouw website, en krijgt hij zijn tickets per e-mail.
Meer dan tickets: module-etalages
Gebruik je meer dan alleen ticketverkoop, dan kun je onder Integraties → Module-embed dezelfde loader gebruiken voor een complete module-etalage. Beschikbaar voor de modules die bij jouw organisatie aanstaan: verhuur & reserveren, webshop, foodtrucks, parkeren & kamperen, lidmaatschappen, cursussen en doneren.
<div data-mijnevent-module="courses"></div>
<script src="https://jouwclub.mijnevent.nl/embed.js" async></script>
Zelfde principe, zelfde automatische hoogte. Zo staat je cursusaanbod of je webshop op een gewone WordPress-pagina, met de bestelling en de administratie in MijnEvent.
Je eigen agenda bouwen: de events-API
Wil je de events in je eigen thema tonen — jouw kaarten, jouw opmaak, jouw filters — dan is er een read-only API op je subdomein:
GET https://jouwclub.mijnevent.nl/api/events— de gepubliceerde, komende events met datum, locatie en vanaf-prijs.GET https://jouwclub.mijnevent.nl/api/events/{slug}— één event met zijn ticketsoorten en beschikbaarheid.
Je hebt er geen sleutel voor nodig. Haal het op vanaf je WordPress-server met wp_remote_get() en bewaar het antwoord kort in een transient, zodat je niet bij elke paginaweergave opnieuw ophaalt. Verkopen doe je vervolgens via de widget of via een link naar de eventpagina.
Wees eerlijk over wat deze API is en niet is: hij is alleen lezen. Er zijn geen schrijfoperaties, geen webhooks en geen API-tokens waarmee je vanuit WordPress het beheer aanstuurt. Wil je meer dan lezen, gebruik dan de widget.
Ledenprijzen vanaf je WordPress-server
Heeft je site een ledenlogin, dan kan WordPress per aankoop doorgeven dat iemand lid is. Je server ondertekent met de geheime sleutel uit Integraties een kortlevend HS256-token en zet dat op de div:
// In functions.php, als shortcode: [mijnevent_tickets]
add_shortcode('mijnevent_tickets', function () {
$token = is_user_logged_in() ? mijnevent_member_token(wp_get_current_user()) : '';
return sprintf(
'<div data-mijnevent-event="zomerfeest-2026" data-member-token="%s"></div>'
.'<script src="https://jouwclub.mijnevent.nl/embed.js" async></script>',
esc_attr($token)
);
});
MijnEvent controleert het token bij het tonen én bij het afrekenen, en past dan de ledenprijs of de besloten ticketsoort toe. Is het token leeg, ongeldig of verlopen, dan wordt de bezoeker gewoon als betalende externe behandeld — er breekt niets. De ondertekening zelf, met een werkend PHP-voorbeeld, staat in Ticketverkoop koppelen aan je bestaande website.
Kort samengevat
Geen plugin, geen installatie, geen updates: twee regels code in een blok Aangepaste HTML en je verkoopt tickets vanaf je eigen WordPress-pagina. Werkt het niet meteen, dan is het bijna altijd de visuele editor, een beveiligingsplug-in of de cache. Een breder overzicht van de integratiemogelijkheden staat in Ticketverkoop integreren: embed, API en ledenkoppeling; de rest vind je in de kennisbank.