Ga naar inhoud

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.

# 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.
# 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.