{"id":128,"date":"2024-01-16T00:00:00","date_gmt":"2024-01-15T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/it\/acorn-prettify-successore-soil-ripulire-wordpress\/"},"modified":"2026-01-20T06:32:46","modified_gmt":"2026-01-20T05:32:46","slug":"acorn-prettify-successore-soil-ripulire-wordpress","status":"publish","type":"post","link":"https:\/\/helloblog.io\/it\/acorn-prettify-successore-soil-ripulire-wordpress\/","title":{"rendered":"Acorn Prettify: il successore di Soil per ripulire WordPress (in casa Roots\/Acorn)"},"content":{"rendered":"\n<p>Roots ha annunciato <a href=\"https:\/\/github.com\/roots\/acorn-prettify\">Acorn Prettify<\/a>, un nuovo package pensato per raccogliere (e continuare a mantenere) una parte delle funzionalit\u00e0 che molti di noi hanno usato per anni tramite <a href=\"https:\/\/github.com\/roots\/soil\">Soil<\/a>. Il messaggio \u00e8 abbastanza chiaro: Roots sta puntando forte su <strong>Acorn<\/strong> e sul suo ecosistema di pacchetti.<\/p>\n\n\n\n<p>Per contestualizzare: Soil nasceva come componente incluso nello starter theme Roots tra il 2011 e il 2014; con Roots v7 era stato separato in un plugin standalone. Oggi, con l\u2019adozione crescente di Acorn (il layer applicativo in stile Laravel per WordPress, con comandi CLI e un modello \u201cpackage-first\u201d), arriva un successore pi\u00f9 allineato alla direzione del progetto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Che cos\u2019\u00e8 Acorn Prettify (e cosa fa davvero)<\/h2>\n\n\n\n<p>Acorn Prettify \u00e8 un package installabile via Composer che abilita una serie di migliorie \u201cpratiche\u201d su WordPress: quelle ottimizzazioni che non cambiano il business value di una feature, ma migliorano la qualit\u00e0 complessiva di markup e output. In altre parole: meno rumore, pi\u00f9 pulizia, e comportamenti pi\u00f9 prevedibili.<\/p>\n\n\n\n<p>Secondo l\u2019annuncio ufficiale, Prettify include le principali funzionalit\u00e0 di Soil che Roots intende continuare a mantenere:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Pulizia del markup WordPress<\/strong>: interventi per rendere l\u2019output HTML pi\u00f9 ordinato (meno \u201csporcizia\u201d generata automaticamente).<\/li>\n\n\n<li><strong>Ricerca migliorata (Nice search)<\/strong>: migliorie al comportamento della ricerca per ottenere URL e query pi\u00f9 gradevoli\/consistenti.<\/li>\n\n\n<li><strong>Relative URLs<\/strong>: riscrittura degli URL in forma relativa, ma <strong>ora disabilitata di default<\/strong>.<\/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\">Nota sulla scelta \u201cRelative URLs off di default\u201d<\/h4>\n\n\n<p>\u00c8 un cambiamento rilevante rispetto ad alcune configurazioni storiche: gli URL relativi possono essere comodi in certi contesti, ma non sempre sono la scelta pi\u00f9 sicura o compatibile. In Prettify risultano presenti ma non attivi automaticamente.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Perch\u00e9 questo passaggio \u00e8 importante nello stack Roots<\/h2>\n\n\n\n<p>La parte interessante non \u00e8 solo \u201cun pacchetto in pi\u00f9\u201d: \u00e8 il segnale di consolidamento attorno ad <strong>Acorn<\/strong> e al suo modo di distribuire funzionalit\u00e0 tramite package e configurazioni pubblicabili. Se lavori con Sage o con progetti WordPress impostati in modo moderno (Composer-first), questo approccio riduce il numero di plugin \u201cutility\u201d sparsi e porta configurazione e codice pi\u00f9 vicino all\u2019app.<\/p>\n\n\n\n<p>Roots parla apertamente di crescita dell\u2019ecosistema: se ti interessa costruire componenti riutilizzabili nello stesso stile, il riferimento \u00e8 la guida su come creare un pacchetto Acorn: <a href=\"https:\/\/roots.io\/creating-an-acorn-package\/\">Creating an Acorn package<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Migrazione: da Soil a Acorn Prettify (passi operativi)<\/h2>\n\n\n\n<p>La migrazione \u00e8 lineare: si sostituisce la dipendenza Composer di Soil con quella di Acorn Prettify.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Rimuovere Soil<\/h3>\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<\/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><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2) Installare Acorn Prettify<\/h3>\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 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\"> require<\/span><span style=\"color:#9ECBFF\"> roots\/acorn-prettify<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3) Nota per chi usa Sage: pulizia delle theme support legacy<\/h3>\n\n\n\n<p>Se il tuo tema (Sage) aveva abilitazioni di Soil tramite <code>add_theme_support<\/code>, puoi rimuovere le opzioni relative dal file <code>app\/setup.php<\/code>. Nell\u2019annuncio viene indicato un esempio concreto nel repository di Sage: <a href=\"https:\/\/github.com\/roots\/sage\/pull\/3172\/files\">PR con esempio<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configurazione: come si attivano le feature di Prettify<\/h2>\n\n\n\n<p>Le funzionalit\u00e0 di Acorn Prettify vengono abilitate e gestite tramite un file di configurazione: <code>config\/prettify.php<\/code> (nel repository: <a href=\"https:\/\/github.com\/roots\/acorn-prettify\/blob\/main\/config\/prettify.php\">config\/prettify.php<\/a>). Il flusso consigliato \u00e8 quello tipico dell\u2019ecosistema Acorn: pubblichi la config nel progetto e poi modifichi i default in base alle tue esigenze.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pubblicare il file di config nel progetto<\/h3>\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<p>Da qui in avanti lavori sulla config pubblicata, decidendo quali feature attivare e con quali impostazioni. Il punto chiave \u00e8 che la configurazione diventa parte del codice del progetto: versionabile, reviewabile, e riproducibile tra ambienti.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cosa controllare dopo la migrazione<\/h2>\n\n\n\n<p>Una volta sostituito Soil con Prettify, ha senso fare un check rapido su alcuni comportamenti tipicamente \u201csensibili\u201d:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Output HTML nelle pagine principali (home, singoli, archivi): verificare che la pulizia del markup non impatti template che si aspettavano determinati hook o tag.<\/li>\n\n\n<li>Ricerca: testare query con spazi, caratteri speciali e paginazione risultati.<\/li>\n\n\n<li>URL relativi: se in passato li usavi (o li evitavi), confermare che l\u2019impostazione attuale sia coerente con CDN, proxy, SEO e plugin che generano URL assoluti.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">In sintesi<\/h2>\n\n\n\n<p>Acorn Prettify \u00e8 la nuova casa \u201cufficiale\u201d per una parte delle ottimizzazioni storiche di Soil, ma in una forma pi\u00f9 coerente con la direzione Roots: <strong>Acorn-first<\/strong>, package via Composer e configurazione pubblicabile. La migrazione richiede pochi comandi, e il cambiamento pi\u00f9 evidente da tenere a mente \u00e8 che le <strong>Relative URLs<\/strong> sono presenti ma <strong>disattivate di default<\/strong>.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Riferimenti \/ Fonti<\/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 pull request #3172<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Se nel tuo stack Roots hai sempre considerato Soil \u201cil pacchetto delle piccole grandi sistemazioni\u201d, ora c\u2019\u00e8 un erede ufficiale: Acorn Prettify. Vediamo cosa porta, cosa cambia rispetto a Soil e come migrare senza intoppi.<\/p>\n","protected":false},"author":20,"featured_media":127,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[4,8,3,67,10],"class_list":["post-128","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecosistema-wordpress","tag-acorn","tag-composer","tag-roots","tag-sage","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/128","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=128"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/posts\/128\/revisions\/149"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media\/127"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/it\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}