{"id":233857,"date":"2023-02-25T14:42:00","date_gmt":"2023-02-25T11:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233857"},"modified":"2022-11-11T12:50:15","modified_gmt":"2022-11-11T09:50:15","slug":"hur-man-tar-bort-gutenberg-block","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/hur-man-tar-bort-gutenberg-block\/","title":{"rendered":"Hur man tar bort Gutenberg-block"},"content":{"rendered":"\n<p>Ett av de vanligaste problemen med att uppdatera ett tema eller plugin med Gutenberg-block \u00e4r att \u00e4ndringar i blockkoden kommer att bryta alla befintliga inl\u00e4gg som anv\u00e4nder det blocket. Som tur \u00e4r erbjuder WordPress en l\u00f6sning; ett s\u00e4tt att avskaffa block. I det h\u00e4r inl\u00e4gget ska vi titta p\u00e5 hur man g\u00f6r detta.<\/p>\n<p>Om du har arbetat med blockutveckling tidigare \u00e4r du f\u00f6rmodligen bekant med detta blockfel n\u00e4r du har lagt till ett block och sedan \u00e4ndrat <code>save<\/code>funktionen.<\/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=\"Hur man tar bort Gutenberg-block\" ><\/a><\/p>\n<p>Detta beror p\u00e5 att WordPress j\u00e4mf\u00f6r det sparade blocket i databasen med den aktuella koden i <code>save<\/code>funktionen i ditt block, och de st\u00e4mmer inte \u00f6verens. WordPress kan inte korrigera skillnaden. I de flesta fall kan du klicka p\u00e5 de tre prickarna p\u00e5 blocket och v\u00e4lja &quot;Attempt Block Recovery&quot;. Om \u00e4ndringarna som gjorts i <code>save<\/code>funktionen var sm\u00e5 (t.ex. en klass\u00e4ndring) kan WordPress \u00e5terst\u00e4lla blocket. Worst case scenario you&#8217; d m\u00e5ste klicka p\u00e5 &quot;Konvertera till HTML&quot; och du kommer att f\u00f6rlora blockets <code>edit<\/code>funktionalitet. Vi kan naturligtvis inte f\u00f6rv\u00e4nta oss att anv\u00e4ndarna av v\u00e5r blockkod manuellt ska hitta alla inl\u00e4gg som anv\u00e4nder detta block och utf\u00f6ra dessa steg f\u00f6r var och en.<\/p>\n<p>S\u00e5 innan vi g\u00f6r uppdateringar av <code>save<\/code>funktionen l\u00e4gger vi till lite kod f\u00f6r att ber\u00e4tta f\u00f6r WordPress hur man hanterar gammalt inneh\u00e5ll som har sparats med den gamla <code>save<\/code>funktionen.<\/p>\n<h2>L\u00e5t oss komma in i koden!<\/h2>\n<p>Det \u00e4r faktiskt ganska enkelt. Kort sagt vad vi beh\u00f6ver g\u00f6ra \u00e4r; l\u00e4gg till en <code>deprecated<\/code>egenskap till <code>registerBlockType()<\/code>funktionsanropet. Den h\u00e4r egenskapen f\u00f6rv\u00e4ntar sig en array. Det betyder att du kan fasa ut ett block flera g\u00e5nger genom att tillhandah\u00e5lla flera poster i arrayen. Varje avskrivning definieras som ett objekt som inneh\u00e5ller hela <code>attributes<\/code>egenskapen och den (gamla) <code>save<\/code>funktionen.<\/p>\n<p>Med andra ord, du definierar en <code>deprecated<\/code>egenskap som en array och sedan kopierar du ditt blocks <code>attributes<\/code>och <code>save<\/code>funktion in i den. Du m\u00e5ste inkludera attribut \u00e4ven om du inte \u00e4ndrar n\u00e5got i dem i uppdateringen. Du beh\u00f6ver inte ta med <code>edit<\/code>funktionen i avskrivningen.<\/p>\n<pre><code>deprecated: [\n    {\n        attributes: { ... },\n        save: (props) =&gt; { ... }\n    }\n]<\/code><\/pre>\n<p>L\u00e5t oss g\u00e5 om detta i ett mer praktiskt exempel.<\/p>\n<p>Anta att v\u00e5r blockkod ser ut ungef\u00e4r s\u00e5 h\u00e4r. Funktionen <code>edit<\/code>\u00e4r exkluderad d\u00e5 vi inte beh\u00f6ver hantera den i avskrivningar.<\/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>L\u00e5t oss d\u00e5 anta att vi vill g\u00f6ra \u00e4ndringar i b\u00e5da attributen och spara och undvika att bryta befintliga block. Vi l\u00e4gger till <code>deprecated<\/code>egenskapen och kopierar hela <code>attributes<\/code>och <code>save<\/code>som ett arrayelement in i den. Sedan \u00e4r vi fria att g\u00f6ra eventuella \u00e4ndringar i <code>attributes<\/code>eller\/och <code>save<\/code>funktion.<\/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>Med den h\u00e4r koden kompilerad kan du hitta ett befintligt inl\u00e4gg med den gamla blockkoden, och du b\u00f6r inte f\u00e5 n\u00e5gon trasig kod!<\/p>\n<p>WordPress kommer att ta reda p\u00e5 att blocket anv\u00e4nder v\u00e5r f\u00f6r\u00e5ldrade kod och laddar inneh\u00e5llet med den f\u00f6r\u00e5ldrade <code>save<\/code>koden. N\u00e4r du g\u00f6r \u00e4ndringar i blocket och uppdaterar inl\u00e4gget kommer blocket att sparas med den nya <code>save<\/code>funktionen.<\/p>\n<h2>Mer avancerad avskrivning och vidare l\u00e4sning<\/h2>\n<p>Ovanst\u00e5ende kodexempel \u00e4r den mest grundl\u00e4ggande formen f\u00f6r avskrivning. WordPress st\u00f6der mer funktionalitet, som att inkludera <code>migrate<\/code>och <code>supports<\/code>till och med tilldela konstanter (t\u00e4nk versionsnummer) till din f\u00f6r\u00e5ldrade kod. Ta en titt p\u00e5 <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-deprecation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WordPress dokumentation om blockavskrivning<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Om du g\u00f6r \u00e4ndringar i Gutenbergs blockkod bryts alla befintliga inl\u00e4gg som anv\u00e4nder det blocket. I det h\u00e4r inl\u00e4gget ska vi titta p\u00e5 hur man tar bort block.<\/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":[901,724,838,942,942,848,901,922,1110,922,818,818,838,848,724,868,868],"tags":[1173],"class_list":["post-233857","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-utvecklaren","category-guide-foer-nyboerjare","category-gutenberg-9","category-handledningar","category-oevrig","category-n-a","category-plugins-3","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233857","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=233857"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233857\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/151740"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233857"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233857"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233857"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}