{"id":136,"date":"2023-02-14T00:00:00","date_gmt":"2023-02-13T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/it\/debug-wordpress-con-acorn-e-ignition\/"},"modified":"2026-01-20T06:32:46","modified_gmt":"2026-01-20T05:32:46","slug":"debug-wordpress-con-acorn-e-ignition","status":"publish","type":"post","link":"https:\/\/helloblog.io\/it\/debug-wordpress-con-acorn-e-ignition\/","title":{"rendered":"Debug pi\u00f9 leggibile in WordPress: usare WP_DEBUG con Acorn (e Ignition)"},"content":{"rendered":"\n<p>In locale, tenere <code>WP_DEBUG<\/code> attivo non \u00e8 un vezzo: \u00e8 l\u2019unico modo realistico per intercettare <em>notice<\/em>, <em>warning<\/em> ed eccezioni mentre stai sviluppando temi o plugin. Il problema \u00e8 che l\u2019esperienza \u201cstandard\u201d di WordPress, quando <code>WP_DEBUG<\/code> (e spesso anche <code>WP_DEBUG_DISPLAY<\/code>) sono abilitati, \u00e8 piuttosto spartana: messaggi buttati a schermo, poco contesto, stack trace che non aiutano davvero.<\/p>\n\n\n\n<p>Se lavori con lo stack Roots (in particolare Bedrock + Acorn), puoi rendere il debugging molto pi\u00f9 leggibile senza cambiare le abitudini base: lasci <code>WP_DEBUG<\/code> attivo, ma migliori drasticamente <strong>come<\/strong> vengono presentati gli errori.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WP_DEBUG: cosa fa e perch\u00e9 va sempre attivato in sviluppo<\/h2>\n\n\n\n<p><code>WP_DEBUG<\/code> \u00e8 la modalit\u00e0 di debug di WordPress: si abilita impostando la costante <code>WP_DEBUG<\/code> nel file di configurazione. In un ambiente di sviluppo dovrebbe essere sempre attiva per scovare subito problemi che altrimenti resterebbero nascosti (e finirebbero in produzione sotto forma di bug intermittenti).<\/p>\n\n\n\n<p>Se usi Bedrock (il boilerplate moderno per WordPress basato su Composer), la configurazione di sviluppo abilita gi\u00e0 <code>WP_DEBUG<\/code> di default, quindi parti avvantaggiato: non devi ricordarti di accenderlo progetto per progetto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Il limite dell\u2019output di default di WordPress<\/h2>\n\n\n\n<p>Quando WordPress mostra direttamente a schermo errori e avvisi, ottieni s\u00ec un segnale immediato, ma spesso con scarsa ergonomia: output mischiato al markup della pagina, informazioni ripetitive e un formato che non guida verso la causa reale. In un ecosistema dove non \u00e8 raro imbattersi in plugin e temi che generano <em>notice<\/em> a raffica, questo diventa presto rumore.<\/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\/6\/2026\/01\/wp_debug-default-scaled.png\" alt=\"Output di default di WP_DEBUG in WordPress con messaggi di errore mostrati direttamente nella pagina\" class=\"wp-image-132\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-default-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Con WP_DEBUG attivo, WordPress tende a stampare errori e notice direttamente a schermo, con poca leggibilit\u00e0. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Come Acorn migliora WP_DEBUG (Symfony exception handler)<\/h2>\n\n\n\n<p>Acorn (il framework application-level dei Roots per portare un\u2019esperienza pi\u00f9 \u201cLaravel-like\u201d in WordPress) interviene sull\u2019esperienza di debug quando <strong><code>WP_DEBUG<\/code> e <code>WP_DEBUG_DISPLAY<\/code><\/strong> sono abilitati. In pratica, invece del testo grezzo, Acorn usa di default l\u2019exception handler di Symfony, che rende le eccezioni pi\u00f9 leggibili e navigabili.<\/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\/6\/2026\/01\/wp_debug-acorn-symfony-scaled.png\" alt=\"Output di debug di Acorn con exception handler Symfony pi\u00f9 leggibile rispetto a WP_DEBUG standard\" class=\"wp-image-133\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-symfony-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Con Acorn, l\u2019errore viene gestito con una pagina di eccezione pi\u00f9 chiara (handler Symfony). \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\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\">Nota pratica<\/h4>\n\n\n<p>Acorn migliora l\u2019output quando <code>WP_DEBUG<\/code> e <code>WP_DEBUG_DISPLAY<\/code> sono attivi: se in locale non vedi la pagina di errore \u201cricca\u201d, verifica di non aver disabilitato la visualizzazione a schermo.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Ignition su WordPress con Acorn v3: l\u2019esperienza \u201calla Laravel\u201d<\/h2>\n\n\n\n<p>Se arrivi dal mondo Laravel, conosci gi\u00e0 Ignition: \u00e8 la pagina di errore predefinita di Laravel (dalla v9) e offre un contesto molto pi\u00f9 utile quando qualcosa va storto. Con l\u2019uscita di Acorn v3, Acorn include il supporto al routing in stile Laravel e questo apre la porta a Ignition anche su siti WordPress basati su Acorn.<\/p>\n\n\n\n<p>Il risultato \u00e8 una pagina di errore estremamente comoda durante lo sviluppo: stack trace chiari, contesto migliore e una UX di debugging coerente con quella che molti team gi\u00e0 usano su progetti Laravel.<\/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\/6\/2026\/01\/wp_debug-acorn-ignition-scaled.png\" alt=\"Output di debug di Acorn con Ignition attivo, simile alla pagina errori di Laravel\" class=\"wp-image-134\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-ignition-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Con Ignition, il debugging in WordPress (via Acorn) diventa molto pi\u00f9 simile a quello di Laravel. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Installazione di Ignition (solo dev) via Composer<\/h3>\n\n\n\n<p>Per iniziare a usare Ignition in un progetto WordPress con Acorn, installalo come dipendenza di sviluppo con Composer dalla stessa directory dove \u00e8 installato Acorn:<\/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\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>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning 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\">Perch\u00e9 `&#8211;dev`<\/h4>\n\n\n<p>Ignition \u00e8 pensato per l\u2019esperienza di debugging in sviluppo: mantenerlo tra le dipendenze di sviluppo riduce il rischio di esporre dettagli non necessari in ambienti non locali.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Chi \u00e8 rimasto su Acorn v2: whoops come alternativa (ma meglio aggiornare)<\/h2>\n\n\n\n<p>Prima di Acorn v3, un abbinamento comune per migliorare l\u2019output era whoops (la libreria PHP per pagine di errore pi\u00f9 \u201cumane\u201d). Se sei ancora su Acorn v2, \u00e8 possibile ottenere un\u2019esperienza migliore rispetto alla pagina Symfony installando whoops. Detto questo, l\u2019indicazione \u00e8 di valutare l\u2019upgrade ad Acorn v3, dove Ignition diventa un\u2019opzione naturale.<\/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\/6\/2026\/01\/wp_debug-acorn-whoops-scaled.png\" alt=\"Output di debug di Acorn con whoops attivo, con stack trace e pannelli informativi\" class=\"wp-image-135\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/6\/2026\/01\/wp_debug-acorn-whoops-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Su Acorn v2, whoops pu\u00f2 migliorare sensibilmente la leggibilit\u00e0 delle eccezioni. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Se non usi Acorn: due plugin utili per il debugging<\/h2>\n\n\n\n<p>Non tutti i progetti WordPress nascono (o possono nascere) con Acorn. In quel caso, per migliorare la diagnostica oltre al semplice <code>WP_DEBUG<\/code>, ci sono plugin che rendono la vita pi\u00f9 facile in locale:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Query Monitor<\/strong>: strumento molto completo per ispezionare query, hook, errori PHP e molto altro; \u00e8 spesso considerato un \u201cmust\u201d in ambienti di sviluppo WordPress.<\/li>\n\n\n<li><strong>Debug Bar<\/strong>: aggiunge un pannello di debug nella toolbar con informazioni utili durante lo sviluppo.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">In sintesi: cosa porti a casa<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>In sviluppo, <code>WP_DEBUG<\/code> dovrebbe essere sempre attivo: riduce i bug \u201csilenziosi\u201d.<\/li>\n\n\n<li>L\u2019output standard di WordPress \u00e8 funzionale ma poco leggibile quando gli errori si moltiplicano.<\/li>\n\n\n<li>Con Acorn, quando <code>WP_DEBUG<\/code> e <code>WP_DEBUG_DISPLAY<\/code> sono attivi, ottieni pagine di errore molto pi\u00f9 chiare (handler Symfony).<\/li>\n\n\n<li>Con Acorn v3 puoi usare Ignition (via <code>spatie\/laravel-ignition --dev<\/code>) per un\u2019esperienza di debugging ancora pi\u00f9 ricca, in stile Laravel.<\/li>\n\n\n<li>Senza Acorn, Query Monitor e Debug Bar sono alternative solide per migliorare l\u2019osservabilit\u00e0 in locale.<\/li>\n\n<\/ol>\n\n\n<div class=\"references-section\">\n                <h2>Riferimenti \/ Fonti<\/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\/acorn\/\" target=\"_blank\" rel=\"noopener noreferrer\">Acorn<\/a><\/li><li><a href=\"https:\/\/roots.io\/bedrock\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/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 \u00e8 indispensabile in sviluppo, ma l\u2019output \u201cgrezzo\u201d di WordPress spesso rallenta la diagnosi. Con Acorn puoi ottenere pagine di errore molto pi\u00f9 chiare \u2014 e, con Ignition, un\u2019esperienza simile a Laravel.<\/p>\n","protected":false},"author":20,"featured_media":131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[4,73,72,74,10],"class_list":["post-136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecosistema-wordpress","tag-acorn","tag-bedrock","tag-debugging","tag-laravel","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":150,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/136\/revisions\/150"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media\/131"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}