{"id":233934,"date":"2023-02-25T15:31:00","date_gmt":"2023-02-25T12:31:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233934"},"modified":"2022-11-11T13:16:39","modified_gmt":"2022-11-11T10:16:39","slug":"come-deprecare-i-blocchi-di-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-deprecare-i-blocchi-di-gutenberg\/","title":{"rendered":"Come deprecare i blocchi di Gutenberg"},"content":{"rendered":"\n<p>Uno dei problemi pi\u00f9 comuni con l&#8217;aggiornamento di un tema o di un plug-in con i blocchi di Gutenberg \u00e8 che apportare modifiche al codice del blocco interromper\u00e0 tutti i post esistenti che utilizzano quel blocco. Fortunatamente WordPress offre una soluzione; un modo per deprecare i blocchi. In questo post vedremo come farlo.<\/p>\n<p>Se hai gi\u00e0 lavorato con lo sviluppo dei blocchi in precedenza, probabilmente hai familiarit\u00e0 con questo errore di blocco quando hai aggiunto un blocco e successivamente modificato la <code>save<\/code>funzione.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151739-61e4cecf0099f.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151739-61e4cecf0099f.png\" alt=\"Come deprecare i blocchi di Gutenberg\" ><\/a><\/p>\n<p>Ci\u00f2 accade perch\u00e9 WordPress confronta il blocco salvato nel database con il codice corrente nella <code>save<\/code>funzione nel blocco e non corrispondono. WordPress non \u00e8 in grado di correggere la differenza. Nella maggior parte dei casi puoi fare clic sui tre punti sul blocco e scegliere &quot;Tentativo di ripristino del blocco&quot;. Se le modifiche apportate alla <code>save<\/code>funzione sono piccole (ad es. un cambio di classe), WordPress \u00e8 in grado di ripristinare il blocco. Nel peggiore dei casi &#8216; \u00c8 necessario fare clic su &quot;Converti in HTML&quot; e perderai la <code>edit<\/code>funzionalit\u00e0 del blocco Ovviamente non possiamo aspettarci che gli utenti del nostro codice di blocco trovino manualmente tutti i post utilizzando questo blocco ed eseguano questi passaggi per ciascuno.<\/p>\n<p>Quindi, prima di aggiornare la <code>save<\/code>funzione, aggiungeremo del codice per dire a WordPress come gestire i vecchi contenuti che sono stati salvati con la vecchia <code>save<\/code>funzione.<\/p>\n<h2>Entriamo nel codice!<\/h2>\n<p>In realt\u00e0 \u00e8 piuttosto semplice. In breve, quello che dobbiamo fare \u00e8; aggiungere una <code>deprecated<\/code>propriet\u00e0 alla <code>registerBlockType()<\/code>chiamata di funzione. Questa propriet\u00e0 prevede una matrice. Ci\u00f2 significa che puoi deprecare un blocco pi\u00f9 volte, fornendo pi\u00f9 voci nell&#8217;array. Ogni ammortamento \u00e8 definito come un oggetto che contiene la <code>attributes<\/code>propriet\u00e0 completa e la (vecchia) <code>save<\/code>funzione.<\/p>\n<p>In altre parole, definisci una <code>deprecated<\/code>propriet\u00e0 come un array e poi copi i tuoi blocchi <code>attributes<\/code>e <code>save<\/code>funzioni al suo interno. Dovrai includere gli attributi anche se non stai modificando nulla in essi nell&#8217;aggiornamento. Non \u00e8 necessario includere la <code>edit<\/code>funzione nell&#8217;ammortamento.<\/p>\n<pre><code>deprecated: [\n    {\n        attributes: { ... },\n        save: (props) =&gt; { ... }\n    }\n]<\/code><\/pre>\n<p>Andiamo su questo in un esempio pi\u00f9 pratico.<\/p>\n<p>Supponiamo che il nostro codice di blocco assomigli a questo. La <code>edit<\/code>funzione \u00e8 esclusa in quanto non \u00e8 necessario gestirla nell&#8217;ammortamento.<\/p>\n<pre><code>const { __ } = wp.i18n;\nconst { registerBlockType } = wp.blocks;\nconst { RichText } = wp.blockEditor;\n\u00a0\nimport edit from '.\/edit';\n\u00a0\nregisterBlockType( 'awp\/deprecated-block-example', {\n    title: __( 'Example of deprecating a block' ),\n    icon: 'format-aside',\n    category: 'widgets',\n    attributes: {\n        alignment: {\n            type: 'string',\n            default: 'center'\n        },\n        exampleString: {\n            type: 'string'\n        },\n    },\n    edit,\n    save: (props) =&gt; { \n        const { exampleString } = props;\n        return(\n            &lt;div className=\"deprecated-block-example\"&gt;\n                &lt;RichText.Content value={ exampleString } \/&gt;\n            &lt;\/div&gt;\n        );\n    }\n});<\/code><\/pre>\n<p>Quindi supponiamo di voler apportare modifiche a entrambi gli attributi e salvare ed evitare di rompere i blocchi esistenti. Aggiungiamo la <code>deprecated<\/code>propriet\u00e0 e vi copiamo l&#8217;intero <code>attributes<\/code>e <code>save<\/code>come elemento dell&#8217;array. Quindi siamo liberi di apportare modifiche <code>attributes<\/code>o\/e <code>save<\/code>funzioni.<\/p>\n<pre><code>const { __ } = wp.i18n;\nconst { registerBlockType } = wp.blocks;\nconst { RichText } = wp.blockEditor;\n\u00a0\nimport edit from '.\/edit';\n\u00a0\nregisterBlockType( 'awp\/deprecated-block-example', {\n    title: __( 'Example of deprecating a block' ),\n    icon: 'format-aside',\n    category: 'widgets',\n    attributes: {\n        alignment: {\n            type: 'string',\n            default: 'center'\n        },\n        exampleString: {\n            type: 'string'\n        },\n        newThing: {\n            type: 'string'\n        },\n    },\n    edit,\n    save: (props) =&gt; { \n        const { exampleString, newThing } = props;\n        return(\n            &lt;div className=\"deprecated-block-example\"&gt;\n                &lt;RichText.Content value={ exampleString } \/&gt;\n                &lt;div className=\"new-content\"&gt;\n                    &lt;RichText.Content value={ newThing } \/&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        );\n    },\n    deprecated: [\n        {\n            attributes: {\n                alignment: {\n                    type: 'string',\n                    default: 'center'\n                },\n                exampleString: {\n                    type: 'string'\n                },\n            },\n            save: (props) =&gt; { \n                const { exampleString } = props;\n                return(\n                    &lt;div className=\"deprecated-block-example\"&gt;\n                        &lt;RichText.Content value={ exampleString } \/&gt;\n                    &lt;\/div&gt;\n                );\n            },\n        }\n    ]\n});<\/code><\/pre>\n<p>Con questo codice compilato, puoi trovare un post esistente usando il vecchio codice di blocco e non dovresti ottenere alcun codice rotto!<\/p>\n<p>WordPress scoprir\u00e0 che il blocco sta utilizzando il nostro codice deprecato e caricher\u00e0 il contenuto utilizzando il <code>save<\/code>codice deprecato. Una volta apportate modifiche al blocco e aggiornato il post, il blocco verr\u00e0 salvato utilizzando la nuova <code>save<\/code>funzione.<\/p>\n<h2>Ammortamenti pi\u00f9 avanzati e ulteriori letture<\/h2>\n<p>L&#8217;esempio di codice sopra \u00e8 la forma pi\u00f9 semplice per l&#8217;ammortamento. <code>migrate<\/code>WordPress supporta pi\u00f9 funzionalit\u00e0, come l&#8217;inclusione <code>supports<\/code>e persino l&#8217;assegnazione di costanti (pensa ai numeri di versione) al tuo codice deprecato. Dai un&#8217;occhiata alla <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-deprecation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentazione di WordPress sull&#8217;ammortamento dei blocchi<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Apportare modifiche al codice del blocco Gutenberg interromper\u00e0 tutti i post esistenti che utilizzano quel blocco. In questo post vedremo come deprecare i blocchi.<\/p>\n","protected":false},"author":1,"featured_media":151740,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,896,720,835,939,939,918,1110,814,814,835,720,844,844,865,865],"tags":[1168],"class_list":["post-233934","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-sviluppatore","category-guida-per-principianti","category-gutenberg-6","category-n-a","category-plugin-2","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233934","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=233934"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233934\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/151740"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233934"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233934"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233934"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}