{"id":148,"date":"2023-02-14T00:00:00","date_gmt":"2023-02-13T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/nl\/wordpress-debuggen-wp-debug-acorn\/"},"modified":"2026-01-20T06:32:48","modified_gmt":"2026-01-20T05:32:48","slug":"wordpress-debuggen-wp-debug-acorn","status":"publish","type":"post","link":"https:\/\/helloblog.io\/nl\/wordpress-debuggen-wp-debug-acorn\/","title":{"rendered":"WordPress debuggen zonder hoofdpijn: WP_DEBUG slimmer maken met Acorn"},"content":{"rendered":"\n<p>Als je regelmatig aan WordPress-thema\u2019s of plugins sleutelt, ken je het: je zet <code>WP_DEBUG<\/code> aan, krijgt een onleesbare notice-bingo bovenin je pagina, en je bent alsnog meer tijd kwijt aan zoeken dan aan fixen. <code>WP_DEBUG<\/code> is essentieel, maar de <em>presentatie<\/em> van fouten is in core behoorlijk basic.<\/p>\n\n\n\n<p>In deze post laat ik zien wat er precies mis is met de standaard <code>WP_DEBUG<\/code>-output, en waarom Acorn (Roots) dat op een nette, moderne manier oplost. Werk je met Bedrock (WordPress-boilerplate met Composer)? Dan is dit extra interessant, omdat debuggen daar sowieso al wat strakker is ingericht.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WP_DEBUG in het kort (en waarom je het lokaal altijd aan wilt hebben)<\/h2>\n\n\n\n<p>WordPress heeft een ingebouwde debugmodus die je activeert via de <code>WP_DEBUG<\/code> constant in je configuratie. In lokale development-omgevingen wil je <code>WP_DEBUG<\/code> eigenlijk altijd aan hebben: je vangt sneller notices, warnings en echte errors, en je voorkomt dat je rommelige edge-cases per ongeluk doorschuift naar staging of productie.<\/p>\n\n\n\n<p>Gebruik je Bedrock (de moderne WordPress setup met Composer)? Dan staat <code>WP_DEBUG<\/code> volgens de Bedrock-configuratie standaard aan in development-omgevingen. Dat is een fijne default: je hoeft minder vaak te onthouden dat je debug nog uit stond.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Waarom de standaard WP_DEBUG-output vaak niet genoeg is<\/h2>\n\n\n\n<p>De standaard output van <code>WP_DEBUG<\/code> is functioneel, maar niet prettig: foutmeldingen en notices worden direct in de HTML gerenderd. Je krijgt weinig context, het is visueel rommelig, en bij exceptions mist vaak de developer-ervaring die je uit moderne frameworks gewend bent.<\/p>\n\n\n\n<p>Het resultaat: je ziet <em>dat<\/em> er iets misgaat, maar je workflow blijft: kopi\u00ebren, terugzoeken, stacktrace ontwarren, en hopen dat je snel bij de juiste regel uitkomt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2252\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-scaled.png\" alt=\"Standaard WP_DEBUG-output in WordPress met foutmeldingen direct op de pagina\" class=\"wp-image-144\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-default-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">De standaard WP_DEBUG-output: direct op het scherm, weinig context. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Acorn: WP_DEBUG-output die w\u00e9l prettig leest<\/h2>\n\n\n\n<p>Acorn is het PHP framework van Roots dat Laravel-achtige features naar WordPress brengt. Denk aan helpers, service containers en een modernere developer experience. Een van de meest tastbare verbeteringen: foutafhandeling (error handling) die je debugoutput drastisch leesbaarder maakt.<\/p>\n\n\n\n<p>Belangrijk detail: Acorn verbetert de output wanneer <code>WP_DEBUG<\/code> \u00e9n <code>WP_DEBUG_DISPLAY<\/code> aan staan. Daarna neemt Acorn de presentatie van exceptions over, zodat je in plaats van \u201cplatte\u201d meldingen een nette errorpagina krijgt met stacktrace en context.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Acorn standaard: Symfony exception handler<\/h3>\n\n\n\n<p>Zonder extra packages gebruikt Acorn standaard de Symfony exception handler. Die geeft je al een veel beter leesbare exception-pagina dan WordPress core. Vooral bij fatals en uncaught exceptions scheelt dit enorm in zoektijd.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2252\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-scaled.png\" alt=\"Acorn WP_DEBUG-output met Symfony exception handler\" class=\"wp-image-145\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-symfony-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Acorn gebruikt standaard de Symfony exception handler voor nettere exceptions. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Acorn + Ignition: de Laravel-ervaring, maar dan in WordPress<\/h3>\n\n\n\n<p>Als je uit de Laravel-hoek komt, is Ignition waarschijnlijk bekend: de errorpagina die sinds Laravel v9 de standaard is. Met Acorn v3 is Ignition ook beschikbaar in WordPress-projecten die Acorn gebruiken. Dat komt doordat Acorn v3 ondersteuning toevoegt voor routing zoals in Laravel, en daarmee ook Ignition kan integreren.<\/p>\n\n\n\n<p>In de praktijk betekent dit: een errorpagina die gemaakt is om snel te debuggen, met een heldere stacktrace en een prettige UI. Roots raadt Ignition aan voor de beste error handling-ervaring in WordPress met Acorn.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2252\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-scaled.png\" alt=\"Acorn WP_DEBUG-output met Ignition error page\" class=\"wp-image-146\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-ignition-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Ignition geeft een moderne, Laravel-achtige errorpagina binnen WordPress via Acorn. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<p>Ignition gebruik je als dev dependency. Vanuit dezelfde directory waar Acorn ge\u00efnstalleerd is, installeer je het met Composer:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>composer require spatie\/laravel-ignition --dev\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> require<\/span><span style=\"color:#9ECBFF\"> spatie\/laravel-ignition<\/span><span style=\"color:#79B8FF\"> --dev<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Praktische tip<\/h4>\n\n\n<p>Houd Ignition als <code>--dev<\/code> dependency. Je wilt dit soort tooling in je lokale\/staging workflow, niet als productie-afhankelijkheid.<\/p>\n\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Acorn + Whoops (met name relevant voor Acorn v2)<\/h3>\n\n\n\n<p>Voor Acorn v3 is Ignition de logische keuze. In de periode v\u00f3\u00f3r v3 werd vaak Whoops gebruikt (een PHP error handler die veel projecten inzetten voor nette foutpagina\u2019s). Zit je nog op Acorn v2, dan kun je met Whoops nog steeds een duidelijk betere ervaring krijgen dan de standaard Symfony errorpagina.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"2560\" height=\"2252\" src=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-scaled.png\" alt=\"Acorn WP_DEBUG-output met Whoops error handler\" class=\"wp-image-147\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/7\/2026\/01\/wp_debug-acorn-whoops-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Wie nog Acorn v2 draait kan met Whoops een betere debugervaring krijgen. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Geen Acorn? Dit zijn sterke alternatieven voor lokaal debuggen<\/h2>\n\n\n\n<p>Niet elk WordPress-project draait op Acorn\/Bedrock, en soms heb je gewoon een klassieke setup. Ook dan kun je je debug-ervaring upgraden met plugins die inzicht geven in wat er onder de motorkap gebeurt.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><a href=\"https:\/\/querymonitor.com\/\">Query Monitor<\/a> \u2013 voor veel developers een must-have lokaal: database queries, hooks, HTTP calls, PHP errors en nog veel meer inzichtelijk.<\/li>\n\n\n<li><a href=\"https:\/\/wordpress.org\/plugins\/debug-bar\/\">Debug Bar<\/a> \u2013 een eenvoudiger alternatief om debugging-informatie in je adminbar te tonen.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Samenvatting: wat levert dit je concreet op?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><code>WP_DEBUG<\/code> blijft de basis: zet het lokaal standaard aan.<\/li>\n\n\n<li>De standaard WordPress-output is bruikbaar, maar niet gemaakt voor snelle diagnose.<\/li>\n\n\n<li>Acorn verbetert de weergave van exceptions zodra <code>WP_DEBUG<\/code> en <code>WP_DEBUG_DISPLAY<\/code> actief zijn.<\/li>\n\n\n<li>Met Acorn v3 + Ignition krijg je een moderne, Laravel-achtige errorpagina in WordPress.<\/li>\n\n\n<li>Zonder Acorn zijn Query Monitor en Debug Bar prima opties om je debug-workflow te verbeteren.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Referenties \/ Bronnen<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/roots.io\/better-wordpress-debugging-with-acorn\/\" target=\"_blank\" rel=\"noopener noreferrer\">Better WordPress Debugging with Acorn<\/a><\/li><li><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/roots.io\/acorn\/docs\/error-handling\/#ignition\" target=\"_blank\" rel=\"noopener noreferrer\">Error Handling &#8211; Acorn Documentation (Ignition)<\/a><\/li><li><a href=\"https:\/\/github.com\/filp\/whoops\" target=\"_blank\" rel=\"noopener noreferrer\">whoops<\/a><\/li><li><a href=\"https:\/\/querymonitor.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Query Monitor<\/a><\/li><li><a href=\"https:\/\/wordpress.org\/plugins\/debug-bar\/\" target=\"_blank\" rel=\"noopener noreferrer\">Debug Bar<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>WP_DEBUG aanzetten is stap \u00e9\u00e9n, maar de standaard foutoutput van WordPress is vaak te karig (of juist te rommelig). Met Acorn kun je exceptions ineens lezen zoals je dat in moderne PHP-apps gewend bent \u2014 inclusief Ignition.<\/p>\n","protected":false},"author":22,"featured_media":143,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[63],"tags":[4,66,73,74,10],"class_list":["post-148","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress-ecosysteem","tag-acorn","tag-bedrock","tag-debugging","tag-laravel","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/148","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/comments?post=148"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/148\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/posts\/148\/revisions\/162"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media\/143"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/media?parent=148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/categories?post=148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/nl\/wp-json\/wp\/v2\/tags?post=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}