{"id":137,"date":"2023-02-14T00:00:00","date_gmt":"2023-02-13T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sv\/felsok-wordpress-debuggningen-med-acorn\/"},"modified":"2026-01-20T06:33:18","modified_gmt":"2026-01-20T05:33:18","slug":"felsok-wordpress-debuggningen-med-acorn","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sv\/felsok-wordpress-debuggningen-med-acorn\/","title":{"rendered":"Fels\u00f6k WordPress-debuggningen med Acorn: fr\u00e5n WP_DEBUG-kaos till l\u00e4sbara fel"},"content":{"rendered":"\n<p>N\u00e4r man jobbar med WordPress lokalt \u00e4r <code>WP_DEBUG<\/code> fortfarande den snabbaste v\u00e4gen till att f\u00e5nga upp notices, warnings och rena fel tidigt. Problemet \u00e4r att WordPress standardbeteende ofta k\u00e4nns som 2008: en varning spottas ut rakt i markupen, layouten spricker och du f\u00e5r en stack trace som \u00e4r mer frustrerande \u00e4n hj\u00e4lpsam.<\/p>\n\n\n\n<p>Om du bygger med Roots-stacken (s\u00e4rskilt Bedrock + Acorn) g\u00e5r det att f\u00e5 en betydligt trevligare debug-upplevelse utan att \u00e4ndra hur WordPress funkar i grunden. Po\u00e4ngen \u00e4r enkel: beh\u00e5ll <code>WP_DEBUG<\/code>, men byt ut den m\u00e4nskligt sv\u00e5rl\u00e4sta felvisningen mot n\u00e5got som faktiskt hj\u00e4lper dig \u00e5tg\u00e4rda felet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad WP_DEBUG g\u00f6r \u2013 och varf\u00f6r standardutskriften \u00e4r ett problem<\/h2>\n\n\n\n<p><code>WP_DEBUG<\/code> \u00e4r WordPress inbyggda debugl\u00e4ge. N\u00e4r det \u00e4r aktivt f\u00e5r du fel och notices som annars kan d\u00f6ljas. Det \u00e4r ov\u00e4rderligt i utvecklingsmilj\u00f6er eftersom WordPress-ekosystemet (teman, plugins, mu-plugins) ofta r\u00e5kar sl\u00e4ppa igenom notices som du vill uppt\u00e4cka direkt.<\/p>\n\n\n\n<p>Men standardutskriften \u00e4r brutal: meddelanden skrivs direkt p\u00e5 sidan. Det g\u00f6r att HTML-renderingen p\u00e5verkas, och du f\u00e5r ofta en blandning av fel, markup och ibland sv\u00e5rnavigerade sp\u00e5rningar. Det \u00e4r b\u00e4ttre \u00e4n ingenting \u2013 men l\u00e5ngt ifr\u00e5n optimalt n\u00e4r du vill fels\u00f6ka snabbt.<\/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\/13\/2026\/01\/wp_debug-default-scaled.png\" alt=\"Standardutskrift fr\u00e5n WP_DEBUG d\u00e4r notices och fel visas direkt p\u00e5 sidan\" class=\"wp-image-132\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-default-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">WordPress standardvisning av WP_DEBUG: fel direkt i outputen. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Acorn som felhanterare: b\u00e4ttre l\u00e4sbarhet utan att uppfinna hjulet<\/h2>\n\n\n\n<p>Acorn \u00e4r Roots brygga som tar in delar av Laravel-ekosystemet i WordPress (t.ex. helpers och modernare struktur). I debug-sammanhang \u00e4r det intressanta att Acorn kan f\u00f6rb\u00e4ttra hur exceptions presenteras n\u00e4r <code>WP_DEBUG<\/code> \u00e4r p\u00e5 \u2013 mer specifikt n\u00e4r <code>WP_DEBUG && WP_DEBUG_DISPLAY<\/code> \u00e4r aktiverat.<\/p>\n\n\n\n<p>I praktiken betyder det att du g\u00e5r fr\u00e5n ett spretigt felutskrift i HTML till en sammanh\u00e5llen felvy med tydligare stack trace, fil-\/rad-information och kontext.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Acorns standard: Symfony exception handler<\/h3>\n\n\n\n<p>Default i Acorn \u00e4r att anv\u00e4nda Symfonys exception handler. Du f\u00e5r en renare, mer strukturerad felvy som \u00e4r l\u00e4ttare att skumma och f\u00f6rst\u00e5, s\u00e4rskilt n\u00e4r felet kommer fr\u00e5n ett djupt call stack i WordPress eller ett plugin.<\/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\/13\/2026\/01\/wp_debug-acorn-symfony-scaled.png\" alt=\"Acorns standardfelvy via Symfony exception handler med tydligare stack trace\" class=\"wp-image-134\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-symfony-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Acorn f\u00f6rb\u00e4ttrar WP_DEBUG med Symfonys exception handler som standard. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Ignition: Laravel-k\u00e4nsla i WordPress (via Acorn v3)<\/h3>\n\n\n\n<p>Om du jobbat i Laravel de senaste \u00e5ren har du n\u00e4stan garanterat sett Ignition \u2013 Laravels standardfelvy sedan v9. En stor grej med Acorn v3 \u00e4r att den har st\u00f6d f\u00f6r routing \u00e0 la Laravel, vilket ocks\u00e5 \u00f6ppnar f\u00f6r Ignition p\u00e5 WordPress-sajter som k\u00f6r Acorn.<\/p>\n\n\n\n<p>Det h\u00e4r \u00e4r i praktiken det mest &#8220;moderna&#8221; fels\u00f6kningsl\u00e4get du kan f\u00e5 i WordPress: en felvy som \u00e4r byggd f\u00f6r att guida dig till r\u00e4tt fil, r\u00e4tt rad och r\u00e4tt kontext, i st\u00e4llet f\u00f6r att bara visa att n\u00e5got gick s\u00f6nder.<\/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\/13\/2026\/01\/wp_debug-acorn-ignition-scaled.png\" alt=\"Acorns WP_DEBUG-felvy med Ignition, liknande Laravels moderna error page\" class=\"wp-image-135\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-ignition-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">Ignition ger en Laravel-lik felvy \u00e4ven i WordPress n\u00e4r du anv\u00e4nder Acorn v3. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Installera Ignition (dev-beroende via Composer)<\/h4>\n\n\n\n<p>F\u00f6r att komma ig\u00e5ng med Ignition i ett WordPress-projekt d\u00e4r Acorn redan \u00e4r installerat kan du l\u00e4gga till paketet som ett dev-beroende med Composer (dvs bara f\u00f6r utveckling):<\/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\">Var k\u00f6r jag kommandot?<\/h4>\n\n\n<p>K\u00f6r det i samma katalog som Acorn \u00e4r installerat (d\u00e4r din <code>composer.json<\/code> f\u00f6r projektet ligger).<\/p>\n\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">whoops: alternativet f\u00f6r \u00e4ldre Acorn-versioner<\/h3>\n\n\n\n<p>Innan Acorn v3 var rekommendationen ofta att anv\u00e4nda whoops f\u00f6r en b\u00e4ttre felvy \u00e4n standardl\u00e4get. whoops ger en mer utvecklarv\u00e4nlig presentation \u00e4n WordPress standardutskrift och kan fortfarande vara relevant om du sitter kvar p\u00e5 Acorn v2.<\/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\/13\/2026\/01\/wp_debug-acorn-whoops-scaled.png\" alt=\"Acorns WP_DEBUG-felvy med whoops som ger en mer utvecklarv\u00e4nlig stack trace\" class=\"wp-image-136\" srcset=\"https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-scaled.png 2560w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-300x264.png 300w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-1024x901.png 1024w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-768x676.png 768w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-1536x1351.png 1536w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-2048x1802.png 2048w, https:\/\/helloblog.io\/app\/uploads\/sites\/13\/2026\/01\/wp_debug-acorn-whoops-400x352.png 400w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><figcaption class=\"wp-element-caption\">whoops var l\u00e4nge det smidigaste s\u00e4ttet att f\u00e5 en b\u00e4ttre debugvy i Acorn-projekt. \u2014 <em>Forr\u00e1s: Roots.io<\/em><\/figcaption><\/figure>\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\">Om du \u00e4r p\u00e5 Acorn v2<\/h4>\n\n\n<p>Enligt Roots rekommendationer \u00e4r Acorn v3 v\u00e4gen fram\u00e5t, men whoops kan fortfarande h\u00f6ja debug-upplevelsen om du inte kan uppgradera direkt.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Bedrock: WP_DEBUG \u00e4r ofta redan r\u00e4tt inst\u00e4llt lokalt<\/h2>\n\n\n\n<p>K\u00f6r du Bedrock (Roots moderna WordPress-boilerplate med Composer) \u00e4r debug ofta enklare att f\u00e5 &#8220;r\u00e4tt&#8221; fr\u00e5n b\u00f6rjan. I Bedrocks utvecklingsmilj\u00f6 \u00e4r <code>WP_DEBUG<\/code> aktiverat som standard, vilket g\u00f6r att du slipper den klassiska situationen d\u00e4r ett team r\u00e5kar utveckla vidare med debug avslaget.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Om du inte k\u00f6r Acorn: tv\u00e5 plugins som f\u00f6rb\u00e4ttrar fels\u00f6kning<\/h2>\n\n\n\n<p>Allt \u00e4r inte Bedrock\/Acorn, och ibland m\u00e5ste man fels\u00f6ka i en mer traditionell WordPress-installation. D\u00e5 finns det plugins som kan g\u00f6ra din lokala debugmilj\u00f6 vassare utan att du beh\u00f6ver bygga om projektet.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Query Monitor<\/strong> \u2013 i praktiken standardverktyget lokalt f\u00f6r att inspektera queries, hooks, HTTP-anrop, PHP-fel m.m.<\/li>\n\n\n<li><strong>Debug Bar<\/strong> \u2013 en enklare debugpanel som kan ge snabb \u00f6verblick i admin<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Praktisk tumregel: aktivera debug, men g\u00f6r den l\u00e4sbar<\/h2>\n\n\n\n<p>F\u00f6r lokal utveckling \u00e4r det s\u00e4llan diskussion om <code>WP_DEBUG<\/code> ska vara p\u00e5 \u2013 det ska den. Skillnaden mellan en frustrerande och en effektiv fels\u00f6kningssession ligger oftast i hur felen presenteras och hur snabbt du kan g\u00e5 fr\u00e5n symptom till faktisk kodrad.<\/p>\n\n\n\n<p>Med Acorn f\u00e5r du en modern felhantering ovanp\u00e5 WordPress, och med Ignition f\u00e5r du en exception-sida som m\u00e5nga redan \u00e4r vana vid fr\u00e5n Laravel. Resultatet \u00e4r mindre tid p\u00e5 att tolka brus, och mer tid p\u00e5 att fixa problemet.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referenser \/ K\u00e4llor<\/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:\/\/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 g\u00f6r jobbet \u2013 men standardutskriften i WordPress g\u00f6r det ofta on\u00f6digt sv\u00e5rt att f\u00f6rst\u00e5 vad som faktiskt gick fel. Med Acorn kan du f\u00e5 en modern felvy (Symfony, Ignition eller whoops) som k\u00e4nns mer som ett samtida PHP-projekt.<\/p>\n","protected":false},"author":62,"featured_media":131,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,68,8,10,76],"class_list":["post-137","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-acorn","tag-bedrock","tag-composer","tag-wordpress","tag-wp_debug"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/comments?post=137"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/137\/revisions"}],"predecessor-version":[{"id":151,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/137\/revisions\/151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media\/131"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media?parent=137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/categories?post=137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/tags?post=137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}