Artikel-single (met paywall)¶
Doel & URL('s)¶
De artikelpagina is het belangrijkste scherm van de WV-subsite: hier wordt de journalistieke inhoud van De Waarheidsvriend gelezen én werkt het paywall-/leadgeneratiemechanisme.
- URL:
/de-waarheidsvriend/artikelen/{slug}/ - Doelgroep: iedereen; volledige tekst voor abonnees en (per artikel) nieuwsbriefinschrijvers.
- Testvoorbeelden (productiedata):
de-man-achter-de-jarige-bijbelvertalingende-biddende-gemeente(met paywall-marker),zie-ik-kom(meditatie, zonder marker, volledig vrij). - 403 van de 8.728 gepubliceerde artikelen bevatten een paywall-marker (telling augustus 2026); artikelen zonder marker zijn integraal openbaar.
- Layout: content 8 kolommen + sidebar 4 kolommen (sidebar rechts), binnen de site-brede schil (zie overzicht).
Opbouw¶
Van boven naar beneden:
- Kopafbeelding met overlay — alleen wanneer
article_imagegevuld is énarticle_type≠ "in memoriam". Overlay bevat (van boven naar beneden): typelabel (alleen bij type ≠ standaard), chapeau (article_subtitle),<h1>met de titel. Bijarticle_image_as_coverwordt de afbeelding als "boekcover" getoond tegen een vaste achtergrondafbeelding. - Zonder kopafbeelding (geen beeld óf in memoriam): typelabel, chapeau en
<h1>staan bovenaan de contentkolom. - Auteursregel (klein) — auteursfoto als thumbnail (generieke silhouet-fallback bij auteur zonder foto), "Door: {naam}", categorienamen, publicatiedatum (NL-formaat, bijv. "6 maart 2026").
- Lead —
article_introals<p class="lead">. - Componenten — de artikeltekst als ACF flexible content (
components), gerenderd in redactionele volgorde. Layout-typen: tekst, tekst+beeld, beeld+tekst, beeld, kader (frame), citaat (quote), galerij, call-to-action, donatie, video, downloads, tabel, en de positiemarker paywall (geen data, alleen positie). Hier grijpt de paywall in — zie hieronder. - Artikelfooter
- Auteursblok (groot) — alleen als een auteur gekoppeld is: foto, naam, biografie (HTML uit het auteursprofiel).
- Share-links — "Deel dit artikel: " met Facebook-sharer, Twitter/X-share en LinkedIn-share, elk met de ge-encodeerde artikel-URL.
- Sidebar (elk blok alleen indien gevuld)
- Downloads — kop "Downloads"; per item titel, bestandstype en bestandsgrootte; opent in nieuw tabblad.
- "Lid worden"-banner — subsite-brede call-to-action (optie
WV_sidebar_banner). - Artikel-advertentie — afbeelding + link uit
article_call_to_action_banner(alleen als afbeelding gezet is). - Agenda-blok — de 2 eerstvolgende agenda-items + link naar het agenda-archief.
- Gerelateerde artikelen — sectie onder de contentcontainer, alleen als
article_related_itemsgevuld is: kop "Gerelateerde artikelen" met per kaart beeld + categorie-overlay, titel, intro (max. 130 tekens + "..."), datum en "Lees door"-link.
SEO¶
og:description=article_intro(zonder HTML).og:image=article_imageop 1200×630 (fallback: origineel formaat, anders Yoast-default).
Databronnen¶
ACF-groep "Artikelen" op wv-article (gedeeld met tr-/cgc-artikelen):
| Veld | Type | Betekenis |
|---|---|---|
article_type |
select | default ("standaard"), column, blog, memoriam ("in memoriam") |
article_category |
taxonomy | categorieën (wv_article_category, meervoudig) |
article_image |
image | kopafbeelding |
article_image_as_cover |
true/false | afbeelding als boekcover tonen |
article_subtitle |
text | chapeau |
article_intro |
textarea | lead |
article_components |
flexible content (clone "Componenten") | de artikeltekst, incl. paywall-marker |
article_author |
relationship → CPT author |
auteur(s); de site toont alleen de eerste |
article_related_items |
relationship | gerelateerde artikelen (handmatig) |
article_issue |
post object → CPT issue |
koppeling aan uitgave (alleen gebruikt in REST/app, niet op de site) |
article_downloads |
repeater (titel + bestand) | sidebar-downloads |
article_call_to_action_banner |
clone (afbeelding + link) | sidebar-advertentie |
CPT author (auteurskaart): name (tekst), image (foto), description (biografie, wysiwyg). NB: auteur-detailpagina's (/predikanten/{slug}/) bestaan niet (404) — auteurs worden alleen inline getoond.
Paywall-opties (ACF "Thema instellingen", per subsite, WV_-prefix):
| Optie | Waarde in data |
|---|---|
paywall_title |
"Dit artikel gratis verder lezen?" |
paywall_text |
"Schrijf u in voor onze nieuwsbrief en lees de volledige tekst van dit artikel." |
paywall_form_id |
29 ("Nieuwsbrief (paywall)") |
paywall_title_subscriber |
"Verder lezen? Word abonnee!" |
paywall_text_subscriber |
wervingstekst met link naar /de-waarheidsvriend/aanbieding/ ("vier maanden voor € 10,-") |
Het paywall-mechanisme¶
Principe¶
De paywall is een redactioneel geplaatste positiemarker in de componenten. Alles vóór de marker is de gratis teaser; alles erná is afgeschermd. De afkapping is server-side: componenten ná de marker komen bij een afgeschermde weergave niet in de HTML-bron voor (dus ook niet verborgen via CSS).
Volledige weergave krijgt wie aan één van twee voorwaarden voldoet:
- ingelogd mét rol
wv-subscriber, of - een geldige artikel-cookie: cookie
subscribed-to-newsletterbestaat én bevat (base64-gecodeerd) het post-ID van dit artikel.
Matrix "wie ziet wat" (artikel mét paywall-marker)¶
| Bezoeker | Artikeltekst | Paywall-box | Inhoud box |
|---|---|---|---|
| Anoniem, geen cookie | t/m marker | ja | titel "Dit artikel gratis verder lezen?", instellingentekst, formulier 29 (1 verplicht e-mailveld, knop "Versturen") |
| Anoniem, cookie voor dít artikel | volledig | nee | — |
| Anoniem, cookie voor een ánder artikel | t/m marker | ja | titel "Verder lezen? Word abonnee!", wervingstekst met link naar /de-waarheidsvriend/aanbieding/, géén formulier |
Ingelogd zonder rol wv-subscriber (ook pastor, ook admins) |
t/m marker | ja | variant afhankelijk van cookie, zoals hierboven |
Ingelogd mét rol wv-subscriber |
volledig | nee | — |
De variantkeuze (inschrijf- vs. abonnee-wervingsbox) hangt uitsluitend af van het bestaan van de cookie, niet van de geldigheid ervan voor het huidige artikel.
Inschrijf-flow (Gravity Form 29 "Nieuwsbrief (paywall)")¶
- Bezoeker vult in de paywall-box het e-mailadres in en verstuurt (non-AJAX-submit naar dezelfde artikel-URL).
- Server-side hook (op formuliertitel "Nieuwsbrief (paywall)"):
- zet cookie
subscribed-to-newsletter= base64(post-ID van het artikel), looptijd 10 jaar, pad/; - redirect terug naar de artikel-permalink → de pagina herlaadt en toont de volledige tekst.
- zet cookie
- Het e-mailadres wordt via de Mailchimp-feed van formulier 29 aangemeld op Mailchimp-lijst
06ec423fd4(double opt-in uit). De GF-bevestigingstekst ("Bedankt voor uw inschrijving! Houd uw mailbox in de gaten, …") wordt door de redirect in de praktijk niet getoond. - De cookie geeft slechts dit ene artikel vrij. Elk volgend paywall-artikel toont de abonnee-wervingsvariant zónder formulier: gratis doorlezen via een tweede inschrijving is bewust niet mogelijk.
Nieuwsbriefbestemming (vastgesteld 2026-08-06)
Formulier 29 gaat alleen naar Mailchimp. De Listmonk-koppeling geldt uitsluitend voor formulier 22 en dan alleen bij inzending vanuit GB-context (de optie listmonk_newsletter_form_ids bestaat alleen met GB_-prefix). Een eerdere inventarisatie-claim dat paywall-inschrijvers naar Listmonk gaan, klopt niet.
Randgevallen¶
- De teaserlengte is per artikel redactioneel bepaald (positie van de marker); er is geen automatische afkapping.
- De cookiewaarde is triviaal manipuleerbaar (base64 van het post-ID): de afscherming is "soft", per artikel.
- Intro's (lead, kaarten, gerelateerd) zijn nooit afgeschermd.
- Artikelen zonder marker renderen de volledige componentenlijst voor iedereen; de paywall-box verschijnt daar nooit.
- Headless/REST-pariteit: in de REST-response (
/wp/v2/wv-articles, alleen geauthenticeerd) krijgt een niet-abonneegb_locked: true, legecontent.rendereden gééncomponents; chapeau/titel/lead/auteur/beeld blijven beschikbaar.
Gedrag & rollen¶
Zie de matrix hierboven. Aanvullend:
- Share-links openen de externe deelvensters met de artikel-URL; er is geen deel-API of copy-knop.
- Downloads openen in een nieuw tabblad; de bestanden zelf zijn niet afgeschermd.
- Cross-site: hetzelfde artikel kan vanaf GB-overzichten bereikt worden met
?t=GB(GB-huisstijl + noindex); het paywall-gedrag is identiek (de GB-paywall-opties hebben dezelfde waarden).
Acceptatiecriteria¶
Weergave:
- Als anonieme bezoeker op
/de-waarheidsvriend/artikelen/{slug}/van een gepubliceerd artikel dan HTTP 200 met chapeau,<h1>-titel, auteursregel "Door: {naam}" + categorieën + datum, en de lead (article_intro). - Als anonieme bezoeker op een artikel mét kopafbeelding en type ≠ in memoriam, dan staan typelabel/chapeau/titel als overlay op het beeld; zonder beeld of bij in memoriam staan ze boven de tekst en is er geen kopafbeelding.
- Als anonieme bezoeker op een artikel met
article_type= column/blog/in memoriam dan wordt het typelabel getoond; bij type "standaard" niet. - Als anonieme bezoeker op een artikel met gekoppelde auteur dan staat onder het artikel het auteursblok met foto, naam en biografie; zonder auteur ontbreekt het blok.
- Als anonieme bezoeker op een artikel dan staan onder het artikel share-links naar Facebook, Twitter/X en LinkedIn met de ge-encodeerde artikel-URL.
- Als anonieme bezoeker op een artikel met gevulde
article_related_itemsdan staat onderaan de sectie "Gerelateerde artikelen" met per kaart titel, intro (max. 130 tekens + "..."), datum en "Lees door"-link; zonder gevuld veld ontbreekt de sectie. - Als anonieme bezoeker op een artikel met downloads dan toont de sidebar het blok "Downloads" met per item titel, bestandstype en bestandsgrootte, en opent de link in een nieuw tabblad.
- Als anonieme bezoeker op een artikel dan toont de sidebar de "Lid worden"-banner en het agenda-blok met de 2 eerstvolgende agenda-items; de artikel-advertentie alleen als die op het artikel is ingesteld.
- Als crawler op een artikel dan is
og:descriptiongelijk aan de intro en verwijstog:imagenaar de artikelafbeelding op 1200×630.
Paywall:
- Als anonieme bezoeker zonder cookie op een artikel mét paywall-marker dan zijn uitsluitend de componenten vóór de marker aanwezig in de HTML-bron, gevolgd door precies één paywall-box met titel "Dit artikel gratis verder lezen?", de instellingentekst en een formulier met één verplicht e-mailveld; de tekst ná de marker komt nergens in de bron voor.
- Als anonieme bezoeker het paywall-formulier met een geldig e-mailadres verstuurt, dan wordt hij teruggeleid naar hetzelfde artikel en is de volledige tekst zichtbaar, zonder paywall-box; er is een cookie
subscribed-to-newslettergezet met een looptijd van ~10 jaar en pad/. - Als anonieme bezoeker mét die cookie een ander artikel met paywall-marker opent, dan toont de paywall-box "Verder lezen? Word abonnee!" met een link naar
/de-waarheidsvriend/aanbieding/en zónder formulier; de tekst blijft afgekapt. - Als anonieme bezoeker het paywall-formulier zonder (of met ongeldig) e-mailadres verstuurt, dan blijft het artikel afgekapt en toont het formulier een validatiefout; er wordt geen cookie gezet.
- Als ingelogde wv-subscriber op een artikel mét paywall-marker dan is de volledige tekst zichtbaar zonder paywall-box (ongeacht cookies).
- Als ingelogde gebruiker zónder rol wv-subscriber (bijv. alleen pastor) op een paywall-artikel dan is het gedrag identiek aan anoniem (afgekapt + boxvariant op basis van cookie).
- Als willekeurige bezoeker op een artikel zónder paywall-marker dan is de volledige tekst zichtbaar en komt er geen paywall-box voor.
- Als bezoeker na inschrijving via het paywall-formulier, dan is het opgegeven e-mailadres aangemeld op de nieuwsbrieflijst (huidig: Mailchimp-lijst
06ec423fd4, zonder double opt-in; rebuild: de dan gekozen nieuwsbriefvoorziening).
Bekende afwijkingen (NIET nabouwen; wel vermelden in het testrapport)
- De keuze tussen de twee paywall-boxvarianten kijkt alleen naar het bestaan van de cookie, niet naar de inhoud; een corrupte/vreemde cookiewaarde levert dus de abonnee-variant zonder formulier op.
- In-memoriam-artikelen tonen nooit de kopafbeelding-header, ook als er wél een afbeelding is ingesteld.
- Het veld
article_advertisingwordt door de code uitgelezen maar bestaat niet in de ACF-definitie (altijd leeg) — niet overnemen. - De GF-bevestigingstekst van formulier 29 is geconfigureerd maar wordt door de cookie-redirect nooit getoond.
- Alleen de eerste gekoppelde auteur wordt getoond, ook als er meerdere zijn gekoppeld; voor de rebuild bevestigen of dit gewenst is.
- Auteursnamen in de auteursregel linken nergens heen (auteur-detailpagina's geven 404 en zijn bewust niet nagebouwd).