{"id":233343,"date":"2023-02-12T17:29:00","date_gmt":"2023-02-12T14:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233343"},"modified":"2022-11-10T20:35:02","modified_gmt":"2022-11-10T17:35:02","slug":"gutenberg-block-patterns-a-developers-look","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/gutenberg-block-patterns-a-developers-look\/","title":{"rendered":"Gutenberg Block Patterns: A Developer&#8217;s Look"},"content":{"rendered":"\n<p>En titt p\u00e5 WordPress Gutenbergs nya blockm\u00f6nster, i en utvecklares \u00f6gon. Vi kommer att unders\u00f6ka vad de \u00e4r, vad de kan anv\u00e4ndas till och en djupare titt p\u00e5 hur man skriver kod f\u00f6r dem.<\/p>\n<h2>Blockm\u00f6nster och deras anv\u00e4ndning<\/h2>\n<p>Blockm\u00f6nster introducerades i WordPress 5.5 (11 augusti 2020). De \u00e4r en ny funktion i blockinf\u00f6raren f\u00f6r att enklare infoga en f\u00f6rdefinierad konfiguration av flera block. Tema- eller plugin-utvecklare kan definiera en grupp av block, hur de \u00e4r kapslade, deras inneh\u00e5ll och deras attribut, och slutanv\u00e4ndare kan infoga detta med en enkel operation med ett klick. Tanken \u00e4r att slutanv\u00e4ndare inte l\u00e4ngre beh\u00f6ver bygga komplexa layouter och alla sina anpassade inst\u00e4llningar manuellt och kapsla dem i l\u00e4mpliga beh\u00e5llare f\u00f6r block som de ofta anv\u00e4nder.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153813-61e5135f8834f.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-153813-61e5135f8834f.png\" alt=\"Gutenberg Block Patterns: A Developer&#039;s Look\" ><\/a><\/p>\n<p>N\u00e4r ett blockm\u00f6nster v\u00e4l har lagts till i editorn vet inte blocken att de lades till genom ett blockm\u00f6nster. De l\u00e4ggs till som vanliga block s\u00e5 att anv\u00e4ndare kan justera sitt inneh\u00e5ll och sina inst\u00e4llningar. Det \u00e4r i grunden en genv\u00e4g f\u00f6r att l\u00e4gga till en konfiguration av flera block.<\/p>\n<p>Tanken \u00e4r bra! Alla slutanv\u00e4ndare \u00e4r inte bekv\u00e4ma med att skapa en stor struktur av kapslade block i editorn f\u00f6r att f\u00e5 det att se perfekt ut. Men \u00e4n s\u00e5 l\u00e4nge \u00e4r den h\u00e4r funktionen mest en f\u00f6rdel f\u00f6r utvecklare eftersom slutanv\u00e4ndare inte kan skapa sina egna m\u00f6nster. F\u00f6r anv\u00e4ndarnas egna anpassade block m\u00e5ste de h\u00e5lla sig till att anv\u00e4nda \u00e5teranv\u00e4ndbara block. Men speciellt f\u00f6r temautvecklare l\u00e5ter blockm\u00f6nster dem verkligen visa slutanv\u00e4ndarna den b\u00e4sta konfigurationen av block som fungerar bra i temat.<\/p>\n<p>WordPress har lagt till ett nytt temast\u00f6d f\u00f6r blockm\u00f6nster: <code>'core-block-patterns'<\/code>. Core kommer sedan 5.5.0 automatiskt att k\u00f6ra en <code>add_theme_support('core-block-patterns')<\/code>s\u00e5 du beh\u00f6ver inte g\u00f6ra detta i ditt tema.<\/p>\n<p>Eftersom alla blockm\u00f6nsterfunktioner bara finns i en v\u00e4ldigt ny WordPress-version \u00e4r det en bra id\u00e9 att f\u00f6rst kontrollera om det finns, s\u00e5 att du inte bryter sidor med \u00e4ldre WordPress-versioner. I alla kodexempel nedan har jag gjort just det.<\/p>\n<p>WordPress 5.5 levereras med 9 f\u00f6rdefinierade blockm\u00f6nster (se listan nedan). Blockm\u00f6nster visas i m\u00f6nsterkategorier (k\u00e4rnan l\u00e4gger till 5 kategorier). Blockm\u00f6nsterkategorier fungerar som postkategorier; du kan l\u00e4gga ett blockm\u00f6nster i flera kategorier. Tema- och plugin-utvecklare kan registrera sina egna blockm\u00f6nster och blockm\u00f6nsterkategorier, samt avregistrera dem i k\u00e4rnan. S\u00e5 l\u00e5t oss ta en n\u00e4rmare titt p\u00e5 hur!<\/p>\n<h2>Blockm\u00f6nster och blockm\u00f6nsterkategorier som ing\u00e5r i WordPress 5.5<\/h2>\n<p>Blockm\u00f6nstren som levereras i WordPress 5.5 \u00e4r f\u00f6ljande (namnutrymmet och snigel-ID f\u00f6r varje m\u00f6nster visas inom parentes):<\/p>\n<ul>\n<li>Tv\u00e5 knappar (&#8217; <code>core\/two-buttons<\/code>&#8217;)<\/li>\n<li>Tre knappar (&#8217; <code>core\/three-buttons<\/code>&#8217;)<\/li>\n<li>Tv\u00e5 kolumner med text (&#8217; <code>core\/text-two-columns<\/code>&#8217;)<\/li>\n<li>Tv\u00e5 kolumner med text med bilder (&#8217; <code>core\/text-two-columns-with-images<\/code>&#8217;)<\/li>\n<li>Tre kolumner med text med knappar (&#8217; <code>core\/text-three-columns-buttons<\/code>&#8217;)<\/li>\n<li>Tv\u00e5 bilder sida vid sida (&#8217; <code>core\/two-images<\/code>&#8217;)<\/li>\n<li>Stor rubrik med rubrik (&#8217; <code>core\/large-header<\/code>&#8217;)<\/li>\n<li>Stor rubrik med en rubrik och en knapp (&#8217; <code>core\/large-header-button<\/code>&#8217;)<\/li>\n<li>Citat (&#8217; <code>core\/quote<\/code>&#8217;)<\/li>\n<\/ul>\n<p>Kategorierna som l\u00e4ggs till i WordPress 5.5 \u00e4r (deras snigel-ID visas inom parentes):<\/p>\n<ul>\n<li>Knappar (&#8217; <code>buttons<\/code>&#8217;)<\/li>\n<li>Kolumner (&#8217; <code>columns<\/code>&#8217;)<\/li>\n<li>Galleri (&#8217; <code>gallery<\/code>&#8217;)<\/li>\n<li>Rubriker (&#8217; <code>header<\/code>&#8217; \u2013 notera inga &#8217;s&#8217; i slutet)<\/li>\n<li>Text (&#8217; <code>text<\/code>&#8217;)<\/li>\n<\/ul>\n<h2>Avregistrering av blockm\u00f6nster<\/h2>\n<p>Du kan avregistrera blockm\u00f6nster med funktionen <code>[unregister_block_pattern](https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-patterns\/#unregister_block_pattern)()<\/code>. Ange bara en str\u00e4ng med blockm\u00f6nstret att ta bort som parameter. Se \u00f6versikten ovan f\u00f6r k\u00e4rnblocksm\u00f6nster. K\u00f6r den h\u00e4r funktionen i en funktion kopplad till <code>init<\/code>\u00e5tg\u00e4rden.<\/p>\n<p>Ett exempel p\u00e5 avregistrering av k\u00e4rnblocksm\u00f6nstren &quot;Tv\u00e5 knappar&quot; och &quot;Tre knappar&quot;:<\/p>\n<pre><code>add_action('init', function() {\n    if (!function_exists('unregister_block_pattern')) {\n        return;\n    }\n    unregister_block_pattern('core\/two-buttons');\n    unregister_block_pattern('core\/three-buttons');\n});<\/code><\/pre>\n<h2>Registrera blockm\u00f6nster<\/h2>\n<p>Registrering av ett nytt blockm\u00f6nster g\u00f6rs med hj\u00e4lp av funktionen <code>[register_block_pattern](https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-patterns\/#register_block_pattern)()<\/code>. Den accepterar tv\u00e5 parametrar; den f\u00f6rsta \u00e4r en str\u00e4ng med ett unikt namn f\u00f6r ditt m\u00f6nster inklusive namnutrymme. Den andra \u00e4r en rad inst\u00e4llningar f\u00f6r ditt blockm\u00f6nster.<\/p>\n<p><strong>Tips<\/strong>: Att definiera ett blockm\u00f6nster kr\u00e4ver att du tillhandah\u00e5ller r\u00e5 HTML-inneh\u00e5ll f\u00f6r din blockkonfiguration. Jag rekommenderar inte att du skriver ut detta manuellt eftersom det l\u00e4tt kommer att orsaka ogiltiga blockkonflikter. G\u00e5 ist\u00e4llet in i editorn och s\u00e4tt upp blocken som du vill ha dem i ditt m\u00f6nster. Klicka sedan p\u00e5 &quot;punktmenyn&quot; i verktygsf\u00e4ltet i f\u00f6r\u00e4ldrablocket och klicka p\u00e5 &quot;Kopiera&quot;. Efter detta kan du g\u00e5 tillbaka till din kodredigerare och klistra in (Ctrl+V). Detta ger dig r\u00e5 HTML till den konfiguration du kopierade. Anv\u00e4nd kodredigerarens funktionalitet f\u00f6r att ers\u00e4tta alla nyrader med <code>n<\/code>och se till att undvika citattecken ordentligt.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153813-61e513609a439.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-153813-61e513609a439.png\" alt=\"Gutenberg Block Patterns: A Developer&#039;s Look\" ><\/a><\/p>\n<p>Egenskaperna f\u00f6r ditt blockm\u00f6nster \u00e4r f\u00f6ljande (andra argumentarray):<\/p>\n<ul>\n<li><strong><code>title<\/code><\/strong>(obligatoriskt): Det visningsbara namnet p\u00e5 ditt blockm\u00f6nster<\/li>\n<li><code>**content**<\/code>(obligatoriskt): RAW HTML f\u00f6r blockkonfiguration<\/li>\n<li><strong><code>description<\/code><\/strong>: Beskrivning f\u00f6r ditt blockm\u00f6nster. \u00c4r visuellt dold<\/li>\n<li><strong><code>categories<\/code><\/strong>: En upps\u00e4ttning kategorier att l\u00e4gga till detta blockm\u00f6nster i. Om du inte tillhandah\u00e5ller den h\u00e4r egenskapen kommer blocket att placeras i en &quot;Okategoriserad&quot; blockm\u00f6nsterkategori.<\/li>\n<li><strong><code>keywords<\/code><\/strong>: En rad nyckelord som kan hj\u00e4lpa anv\u00e4ndare att hitta ditt m\u00f6nster n\u00e4r de s\u00f6ker<\/li>\n<li><strong><code>viewportWidth<\/code><\/strong>: Ange ett heltal av blockm\u00f6nsterbredden i infogaren. P\u00e5verkar endast f\u00f6rhandsvisningen i kuvertet.<\/li>\n<\/ul>\n<p>H\u00e4r \u00e4r ett exempel p\u00e5 att registrera ett blockm\u00f6nster som best\u00e5r av ett t\u00e4ckblock i full bredd som har en bakgrundsf\u00e4rg, som inneh\u00e5ller ett mittjusterat rubrikblock med en specifik textf\u00e4rg och ett mittjusterat stycke av en specifik textf\u00e4rg:<\/p>\n<pre><code>add_action('init', function() {\n    if (!function_exists('register_block_pattern')) {\n        return;\n    }\n    register_block_pattern('awp\/standard-cta-section', [\n        'title' =&gt; __('Standard CTA Section', 'awp'),\n        'keywords' =&gt; ['cta'],\n        'categories' =&gt; ['header'],\n        'viewportWidth' =&gt; 1000,\n        'content' =&gt; \"&lt;!-- wp:cover {\"customOverlayColor\":\"#dadee2\",\"align\":\"full\"} --&gt;n&lt;div class=\"wp-block-cover alignfull has-background-dim\" style=\"background-color:#dadee2\"&gt;&lt;div class=\"wp-block-cover__inner-container\"&gt;&lt;!-- wp:heading {\"align\":\"center\",\"level\":1,\"style\":{\"color\":{\"text\":\"#414446\"}}} --&gt;n&lt;h1 class=\"has-text-align-center has-text-color\" style=\"color:#414446\"&gt;Section title&lt;\/h1&gt;n&lt;!-- \/wp:heading --&gt;nn&lt;!-- wp:paragraph {\"align\":\"center\",\"style\":{\"color\":{\"text\":\"#414446\"}}} --&gt;n&lt;p class=\"has-text-align-center has-text-color\" style=\"color:#414446\"&gt;Write your text here.&lt;\/p&gt;n&lt;!-- \/wp:paragraph --&gt;&lt;\/div&gt;&lt;\/div&gt;n&lt;!-- \/wp:cover --&gt;\",\n    ]);\n});<\/code><\/pre>\n<h2>Registrering av blockm\u00f6nsterkategorier<\/h2>\n<p>Utvecklare kan ocks\u00e5 registrera anpassade blockm\u00f6nsterkategorier. Detta g\u00f6rs med funktionen <code>[register_block_pattern_category](https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-patterns\/#register_block_pattern_category)()<\/code>. Den accepterar tv\u00e5 parametrar; f\u00f6rst en str\u00e4ng av kategorin slug, och sedan en upps\u00e4ttning egenskaper. Just nu st\u00f6ds endast en egenskap i det andra argumentet; <code>label<\/code>f\u00f6r kategorins l\u00e4sbara namn.<\/p>\n<p>Nedan \u00e4r ett exempel p\u00e5 registrering av en anpassad blockm\u00f6nsterkategori:<\/p>\n<pre><code>add_action('init', function() {\n    if (!function_exists('register_block_pattern_category')) {\n        return;\n    }\n    register_block_pattern_category('awp-patterns', ['label' =&gt; __('AWhitePixel Block Patterns', 'awp')]);\n});<\/code><\/pre>\n<p>Med detta kan du l\u00e4gga till &#8217;awp-m\u00f6nster&#8217; till &#8217; <code>categories<\/code>&#8217;-argumentet till <code>register_block_pattern()<\/code>. T\u00e4nk p\u00e5 att om en kategori inte har n\u00e5gra blockm\u00f6nster registrerade f\u00f6r sig, kommer kategorin inte att visas i blockinfogaren. Du m\u00e5ste l\u00e4gga till minst ett blockm\u00f6nster i den h\u00e4r kategorin f\u00f6r att det ska visas.<\/p>\n<h2>Avregistrering av blockm\u00f6nsterkategorier<\/h2>\n<p>Slutligen finns det en funktion <code>[unregister_block_pattern_category](https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-patterns\/#unregister_block_pattern_category)()<\/code>f\u00f6r att avregistrera en blockm\u00f6nsterkategori. Ange kategorin snigel som parameter. Se \u00f6versikten \u00f6ver blockm\u00f6nsterkategorier ovan f\u00f6r k\u00e4rnkategorier och deras sniglar.<\/p>\n<p>Gl\u00f6m inte att blockm\u00f6nsterkategorier utan tilldelade blockm\u00f6nster inte kommer att vara synliga i blockinfogaren. S\u00e5 om du avregistrerar alla blockm\u00f6nster som tilldelats en kategori kommer sj\u00e4lva kategorin inte l\u00e4ngre att vara synlig och du beh\u00f6ver inte n\u00f6dv\u00e4ndigtvis avregistrera kategorin. Alla blockm\u00f6nster som bara \u00e4r tilldelade kategorin du tar bort kommer att flyttas till en &quot;Okategoriserad&quot; kategori.<\/p>\n<p>H\u00e4r \u00e4r ett exempel p\u00e5 avregistrering av k\u00e4rnblocksm\u00f6nsterkategorin &quot;knappar&quot;:<\/p>\n<pre><code>add_action('init', function() {\n    if (!function_exists('unregister_block_pattern_category')) {\n        return;\n    }\n    unregister_block_pattern_category('buttons');\n});<\/code><\/pre>\n<h2>Slutsats<\/h2>\n<p>Den nya blockm\u00f6nsterfunktionen i WordPress Gutenberg \u00e4r definitivt ett steg n\u00e4rmare att f\u00e5 blockredigeraren att fungera mer som en sidbyggare. Enligt min \u00e5sikt \u00e4r nackdelen att slutanv\u00e4ndare inte kan skapa sina egna m\u00f6nster. Men det \u00e4r en bra funktion f\u00f6r temautvecklare att till\u00e5ta slutanv\u00e4ndare att enkelt s\u00e4tta upp blockkonfigurationer och layouter som fungerar bra i temat. Det h\u00e4r \u00e4r en helt ny funktion och den kommer f\u00f6rmodligen att utvecklas och f\u00f6rb\u00e4ttras inom en snar framtid! Jag f\u00f6r en, kan inte v\u00e4nta!<\/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>En utvecklares titt p\u00e5 WordPress Gutenbergs blockm\u00f6nster. Vad de \u00e4r, vad de kan anv\u00e4ndas till och en djupare titt p\u00e5 hur man skriver kod f\u00f6r dem.<\/p>\n","protected":false},"author":1,"featured_media":223885,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,724,942,942,848,901,1110,807,807,818,818,848,724,868,868],"tags":[1173],"class_list":["post-233343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-utvecklaren","category-gutenberg-9","category-handledningar","category-n-a","category-php-9","category-plugins-3","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233343","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=233343"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/233343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=233343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=233343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=233343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}