Bekende afwijkingen (verzamelpagina)¶
Deze pagina verzamelt alle bekende defecten en eigenaardigheden van de huidige site, uit alle inventarisatierapporten (peildatum 6 augustus 2026). Per afwijking: wat er aan de hand is, waar het optreedt en het besluit voor de rebuild.
Beleid
Bekende afwijkingen worden in de Next.js-rebuild niet nagebouwd. Het testrapport van de rebuild vermeldt elke afwijking uit deze lijst expliciet, zodat elk gedragsverschil met de oude site aantoonbaar bewust is. "Herstellen" betekent: in de rebuild het kennelijk bedoelde gedrag bouwen. "Beslispunt" betekent: eerst een redactioneel/functioneel besluit nodig.
Besluit-legenda: Herstellen = in de rebuild direct goed bouwen · Vervalt = bewust niet meenemen · Beslispunt = keuze door opdrachtgever/redactie nodig vóór bouw.
A. Routing en dode links¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| A1 | Auteur-detailpagina's geven altijd 404: het CPT heet author, waardoor de rewrite de gereserveerde WP-queryvar author (user-ID) raakt; er bestaat ook geen weergavetemplate. De Yoast-sitemap publiceert desondanks 1.005 van deze URL's. |
/predikanten/⟨slug⟩/; author-sitemap.xml |
Beslispunt: auteurspagina's alsnog bouwen óf de URL's uit de sitemap houden en 404/redirect geven. Niet nabouwen als 404-in-sitemap. |
| A2 | 29 TR-pagina's "Jaargang … nummer …" zijn onbereikbaar (404): hun pad onder /inhoud/ botst met de artikel-rewrite van tr-article. Voor oude jaargang-URL's bestaan wel Redirection-regels naar artikel-permalinks. |
/theologia-reformata/inhoud/jaargang-…/ |
Beslispunt: content een nieuwe URL geven of laten vervallen. Niet nabouwen als 404. |
| A3 | User-auteursarchieven zijn dood: /author/⟨nicename⟩/ geeft 404. |
/author/…/ |
Vervalt; geen archieven op WP-users. |
| A4 | Legacy-categoriearchieven van het verborgen post-type zijn nog live en tonen verwarrende inhoud (bv. /category/uncategorized/ rendert het Nieuws-overzicht, HTTP 200) en staan in de sitemap. |
/category/⟨slug⟩/; category-sitemap.xml |
Vervalt: 404 of 301 in de rebuild, uit de sitemap. |
| A5 | 125 legacy nieuwsberichten (verborgen post type post) zijn nog bereikbaar op hun root-permalink (bv. /zekerheid-van-het-geloof/ → 200), buiten archief/zoeken/sitemap om. Hoofd-feed /feed/ toont deze legacy-items ook (zie A10). |
/⟨slug⟩/ (root) |
Beslispunt: 301 naar relevant nieuws, behouden als statische content, of 404. |
| A6 | Zeven gepubliceerde pagina's worden overschaduwd door een post-type-archief op dezelfde URL; hun content en "overview"-paginatemplates zijn dode configuratie. Betreft: Nieuws (GB), Evenementen, Boeken & Publicaties, Uitgaven, Nieuws (WV), Inhoud (TR), Publicaties (CGC). | zie paginaoverzicht, markering (A6) | Herstellen conceptueel: in de rebuild bestaat per URL één bron (het archief); de schaduwpagina's vervallen. Eventuele introteksten redactioneel overzetten. |
| A7 | CGC-menu-item "P. Veerman" wijst naar het verouderde rootpad /cornelis-graafland-centrum/dr-p-pieter-veerman/; WordPress vangt dit op met een canonical-301 naar het stuurgroep-pad. |
CGC-hoofdmenu | Herstellen: menu-item direct naar /cornelis-graafland-centrum/stuurgroep/dr-p-pieter-veerman/. |
| A8 | De 404-pagina linkt "De Waarheidsvriend" naar /de-waarheidsvriend/ (de WV-subsite-home) terwijl de overige links GB-pagina's zijn; vermoedelijk was /over-wat-we-doen/de-waarheidsvriend/ bedoeld. |
404-pagina | Beslispunt (cosmetisch); linkdoel bewust kiezen. |
| A9 | Legacy-menu "Primary" is een weesrecord (0 geldige items, geen locatie). | menu-administratie | Vervalt. |
| A10 | Het hoofd-RSS-feed /feed/ levert legacy post-items (verborgen post type) in plaats van actuele content. Alleen /feed/mailchimp/ heeft een aantoonbare afnemer. |
/feed/ |
Beslispunt keep/kill; alleen de mailchimp-feed is functioneel vereist. |
B. Templates en UI¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| B1 | Dode agenda-paginering: de pagineringslinks komen uit de main query over álle events (incl. verleden), maar de getoonde lijst komt uit een eigen "komende events"-query zonder pagineringsparameter. /agenda/page/2/ toont dezelfde lijst; momenteel zelfs een lege lijst mét 5 pagineringslinks. |
/agenda/ (en de wv-/cgc-agenda's, zelfde mechaniek) |
Herstellen: paginering over de daadwerkelijk getoonde (komende) events, of weglaten bij ≤1 pagina. |
| B2 | Thema-overzicht toont 0 artikelen onder de thematiegels: de artikel-query gebruikt de niet meer bestaande taxonomienaam article_category, waardoor onder elke tegel nul artikelen staan (geverifieerd: 11 tegels, 0 artikel-previews). Alleen de tegel-links naar de categoriepagina's werken. |
/over-wat-we-vinden/ |
Herstellen: artikelen per thema tonen (correcte taxonomie wv_article_category) óf bewust alleen tegels tonen — beslispunt over de gewenste weergave. |
| B3 | TR-homepage: knop "Bekijk alle artikelen" heeft een lege href="". |
/theologia-reformata/ |
Herstellen: link naar /theologia-reformata/inhoud/. |
| B4 | CGC-homepage: "Bekijk alle artikelen" linkt naar /de-waarheidsvriend/artikelen/ (moet /cornelis-graafland-centrum/publicaties/ zijn) en "Bekijk alle nieuwsberichten" linkt naar /cornelis-graafland-centrum/publicaties/ (moet /cornelis-graafland-centrum/nieuws/ zijn; ACF-optie CGC_news_archive staat verkeerd). |
/cornelis-graafland-centrum/ |
Herstellen: correcte doelen; optiewaarde corrigeren. |
| B5 | Placeholder-links href="#": CTA's "Word lid" en "Doneer nu" in het mobiele canvas-menu, en de accountlinks (behalve Uitloggen) in de v2-header-accountdropdown. De werkende varianten staan in de (desktop-)topbar. |
header/canvas-menu, alle pagina's | Herstellen: echte doelen (lidmaatschaps-/donatiepagina, accountpagina's). |
| B6 | Categoriearchief rendert geen paginering terwijl de lijst op 10 wordt afgekapt: artikelen voorbij nummer 10 zijn daar onbereikbaar. | /artikelen/categorieën/⟨term⟩/ |
Herstellen: paginering toevoegen. |
| B7 | Auteursblok bij nieuws- en evenement-singles kan nooit verschijnen ($hasAuthor-bug in de controllers); de bijbehorende velden news_subtitle/news_intro/news_author bestaan bovendien niet meer in ACF. |
nieuws-/event-detailpagina's | Vervalt: geen auteursblok op nieuws/events (tenzij redactie het alsnog wil — dan velden + weergave opnieuw ontwerpen). |
| B8 | ACF-veld news_components wordt op nieuwsberichten niet gerenderd (de blokken-partial leest standaard de sleutel components; events geven hun sleutel wél expliciet mee). |
nieuwsbericht-singles | Herstellen: componenten van nieuwsberichten tonen indien gevuld. |
| B9 | Footer-socialblok toont maximaal één netwerk (elseif-keten) in plaats van alle gevulde; het "instagram"-veld rendert bovendien een LinkedIn-icoon. | footer, alle pagina's | Herstellen: alle gevulde netwerken met juiste iconen. |
| B10 | Homepage "Lees de laatste uitgave": de knoptekst-variabele ("Word abonnee" voor niet-abonnees) wordt berekend maar nooit gebruikt; de knop toont altijd "Bekijk uitgave" en linkt anoniem naar /inloggen/. |
GB/WV-homepage | Herstellen: knoptekst afstemmen op de status van de bezoeker. |
| B11 | In-memoriam-artikelen (article_type = memoriam) tonen nooit de kopafbeelding-header, ook als er een afbeelding is. |
WV/TR-artikel-singles | Beslispunt: vermoedelijk bewust (soberheid); expliciet vastleggen en dan overnemen als regel, niet als bug. |
| B12 | Afgeschermde routes tonen een kale WordPress-foutpagina (403 "U heeft geen toestemming…"); de nette "log in / word abonnee"-teksten in de views zijn dode code die nooit bereikt wordt. | /uitgaven/*, /predikant-gegevens/ |
Herstellen: nette toegangspagina met inlog- en abonneeroute (bewuste verbetering t.o.v. huidig gedrag; vermelden in testrapport). |
| B13 | Ingelogde gebruikers met alleen rol subscriber zien geen "Mijn account"-link in de accountdropdown, terwijl /account/ voor hen wel werkt als ze de URL kennen. |
topbar-accountdropdown | Beslispunt: link tonen voor elke ingelogde, of /account/ beperken. |
| B14 | De paywall-variantkeuze ("Word abonnee!" i.p.v. formulier) hangt af van het bestaan van het nieuwsbriefcookie, niet van de geldigheid ervan. | WV-paywall-artikelen | Herstellen: consistente cookie-validatie. |
| B15 | Veld article_advertising wordt uitgelezen maar bestaat niet in de ACF-definitie (altijd leeg); ook product_title, event_type, event_author, event_costs, event_category en views worden gelezen maar zijn niet (meer) gedefinieerd of gevuld. |
artikel-/product-/event-templates | Vervalt: dode velden niet overnemen; benodigde velden opnieuw definiëren. |
| B16 | Fonts "Roboto" en "Poppins" worden in v2-CSS gedeclareerd maar nergens geladen (fallback-rendering); het GB-logo-v2 bevat een <text>-element in het niet-geladen font 'Depot New'. |
header/canvas-menu; GB-logo | Herstellen: fontstack opschonen; logo als statische SVG zonder live tekst. |
C. SEO en metadata¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| C1 | Titel-defecten: TR- en CGC-homepages hebben <title> "Pagina's - Gereformeerde Bond" (generieke archieftitel); cgc-page-singles hebben een kale titel "Gereformeerde Bond" (zonder paginanaam); cgc-event-singles tonen "Agenda - Gereformeerde Bond". |
TR/CGC-subsites | Herstellen: correcte, specifieke titels per pagina; Yoast-titelsjablonen als referentie uitlezen. |
| C2 | De sitemap publiceert URL's die 404 of 403 geven: 1.005 auteur-URL's (zie A1), 205 uitgaven-URL's (403-gate), legacy-categoriearchieven (A4) en flipbook-querystring-URL's. | sitemap_index.xml |
Herstellen: sitemap in de rebuild bevat uitsluitend publiek bereikbare URL's. |
D. Tracking, consent en afscherming¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| D1 | GA4 laadt onvoorwaardelijk (gtag.js, meet-ID G-42MMSGNGJN, mu-plugin op master) en is niet gekoppeld aan de cookiebanner, terwijl de bannertekst "functionele en analytische cookies" belooft en een weiger-knop biedt. Consent-keuze heeft dus geen effect op GA4. | alle pagina's | Herstellen: in de rebuild consent-gated analytics (AVG-toets); bannergedrag opnieuw ontwerpen. Niet nabouwen zoals nu. |
| D2 | Een Waarheidsvriend-PDF is publiek bereikbaar via de flipbook-viewer /?r3d=de-waarheidsvriend (PDF uit 2021 in uploads/2021/05/, búiten de beschermde uploads/issues/-map). Mogelijk een bewuste proefuitgave; niet vast te stellen. |
/?r3d=…-routes (4 flipbooks, in sitemap) |
Beslispunt: per flipbook bepalen — meenemen als publieke PDF-viewer, achter login, of saneren. |
E. API¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| E1 | WPGraphQL is defect én onbedoeld open: alle drie de article-CPT's registreren dezelfde GraphQL-naam article (naamconflict, maar één type bevraagbaar); anonieme queries omzeilen de REST-afscherming (artikel-metadata lekt; de body niet, want de ACF-extensie is inactief); op productie/dev levert /graphql bovendien HTML in plaats van JSON. |
/graphql |
Vervalt: GraphQL niet nabouwen; rebuild gebruikt REST. Plugin op WP uitschakelen/saneren. |
| E2 | De REST-afscherming is grofmazig: élke ingelogde gebruiker (ongeacht rol) passeert de 401-check op artikel-/uitgave-routes; fijnmazigheid zit alleen in gb_locked. |
/wp/v2/* |
Beslispunt bij API-ontwerp rebuild; huidig gedrag documenteren als uitgangspunt. |
F. Formulieren en data¶
| # | Wat | Waar | Besluit |
|---|---|---|---|
| F1 | ACF-optie CGC_paywall_form_id staat op 18 ("Account bijwerken") waar GB/WV 29 ("Nieuwsbrief paywall") gebruiken — misconfiguratie zonder zichtbaar effect (0 CGC-artikelen met paywall). |
thema-opties CGC | Herstellen: optie corrigeren of paywall-config voor CGC weglaten. |
| F2 | wv-page /de-waarheidsvriend/test-actie/ verwijst naar het verwijderde formulier 30 (dode verwijzing). |
/de-waarheidsvriend/test-actie/ |
Vervalt: testpagina niet meenemen. |
| F3 | Prijs-inconsistentie in de abonnementsflow: formulierkeuze zegt "€ 53,-", maar twee cadeau-notificaties triggeren op de oude waarde "€ 52,50" en kunnen dus nooit meer verzonden worden. Prijzen staan bovendien op ≥3 plekken hardcoded (formulier, abonnementstemplate, paywall-tekst). | WV-abonnementsformulier (#20) | Herstellen: notificatie-condities corrigeren; bij rebuild prijzen op één beheerde plek. |
| F4 | Mailchimp-feeds mappen voornaam/achternaam op velden die in de nieuwsbriefformulieren (22, 29) niet meer bestaan — alleen het e-mailadres komt aan. | nieuwsbrief-inschrijvingen | Herstellen of accepteren (beslispunt datavelden nieuwsbrief). |
| F5 | Het sitebrede nieuwsbriefblok gebruikt hardcoded formulier 22 en negeert de per-subsite-optie {KEY}_newsletter_form_id. |
alle pagina's met nieuwsbriefblok | Herstellen: optie respecteren. |
| F6 | Formulieren 8 (WV Word abonnee), 15 (WV Actie) en 26 (WV digitaal) zijn actief mét inzendhistorie maar nergens meer ge-embed; formulier 44 (terugbetaling) is inactief en de concept-pagina ervoor verwijst naar het verkeerde formulier. | Gravity Forms-beheer | Vervalt: niet meenemen; opschonen in WP. |
| F7 | Beheerdersmelding én refund-notificatie van het contributieformulier (#42, hoogste betaalvolume) staan uit. | formulier 42 | Beslispunt: bewust of vergeten — met beheerder afstemmen vóór rebuild van de notificatiestroom. |
O. Openstaande inventarisatiepunten (geen defecten)¶
Deze punten zijn geen defecten maar gaten in de inventarisatie: vóór of tijdens de rebuild verifiëren en de uitkomst in deze documentatie verwerken.
| # | Punt | Toelichting |
|---|---|---|
| O1 | Actieve plugins zonder frontend-documentatie | sessions (sessiebeheer/geforceerd uitloggen), code-snippets (actieve snippets niet uitgelezen — kunnen frontend-gedrag bevatten), reactpress (0 geconfigureerde apps, feitelijk ongebruikt), device-detector, duplicate-post, admin-menu-editor, csv-xml-import-for-acf. NB: W3 Total Cache is — anders dan verouderde projectdocumentatie zegt — niet actief. |
| O2 | 2FA-configuratie | Plugin two-factor-authentication is actief; voor welke rollen 2FA aan staat is niet uitgelezen. Raakt de login-testscripts, zie Inloggen. |
| O3 | E-mailteksten en aflevering | De bodies van de User Registration-mails (wachtwoord-instel-/activatiemail) en van de GF-notificaties zijn niet geëxtraheerd; verzending loopt via WP Mail SMTP → Azure Communication Services. Afzenderdomeinen en DKIM/SPF toetsen bij de domeinkeuze van de rebuild. |
| O4 | Yoast-configuratie | Titelsjablonen per post type, social-defaults en noindex-instellingen zijn niet geëxporteerd; nodig voor SEO-pariteit (verklaart o.a. de titel-defecten onder C1). |
| O5 | Overige feeds en embeds | Atom-/RDF-varianten en de search-feed (/search/⟨term⟩/feed/) zijn nooit inhoudelijk bekeken; of oEmbeds (bijv. YouTube in wysiwyg-content) live werken is niet geverifieerd. |
| O6 | Inhoud specifieke pagina's | De feitelijke inhoud van /hartelijk-dank-voor-uw-bijdrage/ en /studietoelage-bedankt/ is niet vastgelegd (alleen als redirect-doel gedocumenteerd); idem wat /pasen/ (template-pdf) precies embedt. Nodig voor de betaal-/aanvraag-acceptatietests. |
| O7 | Userback-feedbackwidget | Voor élke ingelogde gebruiker laadt partials/usersnap.blade.php de externe Userback-widget (static.userback.io, hardcoded access-token). Doelgroep/nut onbekend — besluit nodig of dit meegaat naar de rebuild. |
| O8 | Caching op productie | W3TC is niet actief; welke caching-/CDN-headers nginx/Coolify op prod zetten is niet geïnventariseerd. |
| O9 | ?t=-matrix |
Het ?t=-gedrag is gedocumenteerd voor artikelen/menu's/homepages, niet voor álle template-typen (bv. uitgave of product met ?t=WV). Randgeval; bij twijfel live vaststellen. |
| O10 | TR/CGC-zoekresultaten | Zoeken vanaf TR-/CGC-pagina's is beschreven op basis van de code (pre_get_posts beperkt tot subsite-types) maar nooit live geverifieerd; de geconfigureerde niet-bestaande types tr-post/tr-event maken het feitelijke resultaat onzeker. |
Expliciet vastgestelde non-features (bevestigd afwezig; vastleggen als bewuste keuze, niet per ongeluk "verbeteren"): geen meertaligheid (uitsluitend nl_NL), geen breadcrumbs, geen advertentieserver-placements (slechts één shortcode-advertentie in één artikel) en geen per-subsite-favicon (overal de GB-set — zie Design tokens).
Doorverwijzing¶
De context per afwijking staat in de betreffende hoofdstukken: Subsites & routing, Rollen & toegang, Paginaoverzicht en de subsite-secties (GB/WV/TR/CGC), Formulieren en API.