{"id":129,"date":"2024-01-16T00:00:00","date_gmt":"2024-01-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sv\/acorn-prettify-nasta-steg-efter-soil\/"},"modified":"2026-01-20T06:33:18","modified_gmt":"2026-01-20T05:33:18","slug":"acorn-prettify-nasta-steg-efter-soil","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sv\/acorn-prettify-nasta-steg-efter-soil\/","title":{"rendered":"Acorn Prettify: n\u00e4sta steg efter Soil f\u00f6r modernare WordPress-projekt"},"content":{"rendered":"\n<p>Om du bygger WordPress med Roots\/Sage \u00e4r chansen stor att du n\u00e5gon g\u00e5ng har haft <strong>Soil<\/strong> som ett sj\u00e4lvklart inslag: en liten verktygsl\u00e5da f\u00f6r att snygga till WordPress-upplevelsen. Nu har Roots lanserat <strong>Acorn Prettify<\/strong> \u2013 en efterf\u00f6ljare som passar b\u00e4ttre in i deras nya fokus: att satsa fullt ut p\u00e5 <strong>Acorn<\/strong> (Roots Laravel-inspirerade runtime i WordPress) och dess paket-ekosystem.<\/p>\n\n\n\n<p>I den h\u00e4r genomg\u00e5ngen f\u00e5r du koll p\u00e5 vad Acorn Prettify tar med sig fr\u00e5n Soil, vad som har \u00e4ndrats, och hur en migration ser ut n\u00e4r du hanterar beroenden med Composer.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bakgrunden: fr\u00e5n Roots-tema till frist\u00e5ende plugin \u2013 och vidare till Acorn<\/h2>\n\n\n\n<p>Soil har funnits l\u00e4nge i Roots-v\u00e4rlden. Ursprungligen f\u00f6ljde det med Roots starter theme (runt 2011\u20132014). N\u00e4r Roots v7 kom br\u00f6ts Soil ut till ett frist\u00e5ende plugin. Med Acorn som tydlig mittpunkt i dagens Roots-stack \u00e4r det logiskt att motsvarande funktionalitet ocks\u00e5 landar som ett Acorn-paket \u2013 d\u00e4rav Acorn Prettify.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vad Acorn Prettify faktiskt g\u00f6r (och vad Roots t\u00e4nker underh\u00e5lla)<\/h2>\n\n\n\n<p>Acorn Prettify \u00e4r inte t\u00e4nkt som en exakt 1:1-kopia av allt Soil n\u00e5gonsin inneh\u00e5llit. Fokus ligger p\u00e5 de funktioner Roots uttryckligen vill forts\u00e4tta underh\u00e5lla fram\u00e5t:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Renare WordPress-markup<\/strong> \u2013 st\u00e4dar upp och f\u00f6renklar HTML\/utdata d\u00e4r WordPress annars kan vara lite spretigt.<\/li>\n\n\n<li><strong>Nice search<\/strong> \u2013 f\u00f6rb\u00e4ttringar kring s\u00f6k (praktiskt om du vill undvika udda edge cases i standardbeteendet).<\/li>\n\n\n<li><strong>Relative URLs<\/strong> \u2013 st\u00f6d f\u00f6r relativa URL:er, men viktigt: detta \u00e4r <strong>avst\u00e4ngt som standard<\/strong> i Acorn Prettify.<\/li>\n\n<\/ul>\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\">Relativa URL:er \u00e4r numera opt-in<\/h4>\n\n\n<p>I Soil var relativa URL:er en vanlig optimering, men kan ocks\u00e5 skapa \u00f6verraskningar (t.ex. i vissa CDN-\/proxy-uppl\u00e4gg eller n\u00e4r inneh\u00e5ll konsumeras utanf\u00f6r sajten). I Acorn Prettify \u00e4r funktionen d\u00e4rf\u00f6r avst\u00e4ngd som standard och aktiveras via konfiguration.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Migrera fr\u00e5n Soil till Acorn Prettify (Composer-baserade projekt)<\/h2>\n\n\n\n<p>Bytet \u00e4r rakt p\u00e5 sak om du redan hanterar Roots-komponenter via <strong>Composer<\/strong>. Du tar bort Soil och l\u00e4gger till Acorn Prettify.<\/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 remove roots\/soil\n$ composer require roots\/acorn-prettify\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\">$<\/span><span style=\"color:#9ECBFF\"> composer<\/span><span style=\"color:#9ECBFF\"> remove<\/span><span style=\"color:#9ECBFF\"> roots\/soil<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">$<\/span><span style=\"color:#9ECBFF\"> composer<\/span><span style=\"color:#9ECBFF\"> require<\/span><span style=\"color:#9ECBFF\"> roots\/acorn-prettify<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Sage: rensa bort Soil-specifik theme support<\/h3>\n\n\n\n<p>Om du k\u00f6r Sage och tidigare har aktiverat Soil via <code>add_theme_support(...)<\/code> beh\u00f6ver du \u00e4ven rensa bort de inst\u00e4llningarna i din temakod. Roots pekar p\u00e5 ett konkret exempel i Sage-repot som visar vilka rader som f\u00f6rsvinner n\u00e4r Soil tas bort.<\/p>\n\n\n\n<p>Exempel: <a href=\"https:\/\/github.com\/roots\/sage\/pull\/3172\/files\">pull request i Sage som visar \u00e4ndringar<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Konfiguration: allt styrs via <code>config\/prettify.php<\/code><\/h2>\n\n\n\n<p>Acorn Prettify aktiverar sina funktioner via en config-fil: <a href=\"https:\/\/github.com\/roots\/acorn-prettify\/blob\/main\/config\/prettify.php\"><code>config\/prettify.php<\/code><\/a>. Det \u00e4r i linje med hur Acorn-paket ofta fungerar: tydliga defaults i en vendor-fil, och en publicerad config i projektet n\u00e4r du vill b\u00f6rja styra beteendet sj\u00e4lv.<\/p>\n\n\n\n<p>F\u00f6r att \u00e4ndra standardinst\u00e4llningar publicerar du config-filen och justerar den i ditt projekt:<\/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>$ wp acorn vendor:publish --tag=prettify-config\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\">$<\/span><span style=\"color:#9ECBFF\"> wp<\/span><span style=\"color:#9ECBFF\"> acorn<\/span><span style=\"color:#9ECBFF\"> vendor:publish<\/span><span style=\"color:#79B8FF\"> --tag=prettify-config<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Varf\u00f6r det h\u00e4r spelar roll om du bygger \u201cmoderna WordPress\u201d-stackar<\/h2>\n\n\n\n<p>Den intressanta delen h\u00e4r \u00e4r mindre vilka enskilda tweaks som f\u00f6ljer med, och mer vad det s\u00e4ger om riktningen: Roots konsoliderar verktyg runt Acorn och vill att nya byggstenar ska leva som paket i ett v\u00e4xande ekosystem. F\u00f6r dig som utvecklare betyder det oftast tydligare konfiguration, mer konsekvent pakethantering via Composer, och ett mer f\u00f6ruts\u00e4gbart s\u00e4tt att uppgradera \u00f6ver tid.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sammanfattning<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Acorn Prettify \u00e4r efterf\u00f6ljaren till Soil och passar in i Roots satsning p\u00e5 Acorn.<\/li>\n\n\n<li>Paketet inneh\u00e5ller de funktioner Roots vill underh\u00e5lla fram\u00e5t: renare markup, f\u00f6rb\u00e4ttrat s\u00f6kbeteende och st\u00f6d f\u00f6r relativa URL:er (avst\u00e4ngt som standard).<\/li>\n\n\n<li>Migrationen \u00e4r enkel i Composer-projekt: ta bort <code>roots\/soil<\/code>, installera <code>roots\/acorn-prettify<\/code> och rensa eventuella Soil-specifika <code>add_theme_support<\/code> i Sage.<\/li>\n\n\n<li>Beteendet styrs via en config (<code>config\/prettify.php<\/code>) som du kan publicera med <code>wp acorn vendor:publish --tag=prettify-config<\/code>.<\/li>\n\n<\/ol>\n\n\n\n<p>Officiell diskussionstr\u00e5d hos Roots: <a href=\"https:\/\/discourse.roots.io\/t\/-\/26545\">https:\/\/discourse.roots.io\/t\/-\/26545<\/a><\/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\/announcing-acorn-prettify\/\" target=\"_blank\" rel=\"noopener noreferrer\">Announcing Acorn Prettify<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/acorn-prettify\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/acorn-prettify<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/soil\" target=\"_blank\" rel=\"noopener noreferrer\">roots\/soil<\/a><\/li><li><a href=\"https:\/\/roots.io\/creating-an-acorn-package\/\" target=\"_blank\" rel=\"noopener noreferrer\">Creating an Acorn package<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/sage\/pull\/3172\/files\" target=\"_blank\" rel=\"noopener noreferrer\">Sage PR #3172<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Roots-familjen tar \u00e4nnu ett kliv mot ett mer Acorn-drivet ekosystem. Acorn Prettify ers\u00e4tter Soil och samlar de delar som fortfarande \u00e4r v\u00e4rda att underh\u00e5lla: renare markup, b\u00e4ttre s\u00f6k och relativa URL:er (numera avst\u00e4ngt som standard).<\/p>\n","protected":false},"author":62,"featured_media":128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[4,8,3,72,10],"class_list":["post-129","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-acorn","tag-composer","tag-roots","tag-sage","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/129","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=129"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/129\/revisions"}],"predecessor-version":[{"id":150,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/posts\/129\/revisions\/150"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media\/128"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/media?parent=129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/categories?post=129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sv\/wp-json\/wp\/v2\/tags?post=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}