{"id":229068,"date":"2022-10-17T10:38:00","date_gmt":"2022-10-17T07:38:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229068"},"modified":"2022-11-09T05:25:00","modified_gmt":"2022-11-09T02:25:00","slug":"registra-un-modello-di-blocco-per-leditor-di-blocchi-di-wordpress-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/registra-un-modello-di-blocco-per-leditor-di-blocchi-di-wordpress-gutenberg\/","title":{"rendered":"Registra un modello di blocco per l&#8217;editor di blocchi di WordPress (Gutenberg)"},"content":{"rendered":"\n<p>Nella mia guida precedente ho esplorato <a href=\"https:\/\/wholesomecode.ltd\/guides\/register-block-pattern-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il potere dei modelli a blocchi<\/a>. I modelli di blocco sono simili, ma invece di affidarsi al tuo cliente per inserire i modelli di blocco nell&#8217;editor, fornisce loro un layout completo non appena inseriscono un nuovo post.<\/p>\n<h2>Prerequisiti<\/h2>\n<ul>\n<li>Installazione WordPress<\/li>\n<li>Editor di codice<\/li>\n<\/ul>\n<h2>Crea il tuo modello di blocco<\/h2>\n<p>In questo esempio inserir\u00f2 lo stesso <a href=\"https:\/\/wholesomecode.ltd\/guides\/register-block-pattern-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">schema di blocco che ho creato nella mia guida precedente<\/a>, ma come modello di blocco.<\/p>\n<p>In quella guida abbiamo copiato l&#8217;HTML dell&#8217;output dell&#8217;editor. In questa guida, faremo qualcosa di leggermente diverso e costruiremo una serie di spazi dei nomi, propriet\u00e0 e contenuto dei blocchi.<\/p>\n<p>Nella sua forma pi\u00f9 semplice un modello di blocco assomiglia un po&#8217; a questo:<\/p>\n<pre><code>$block_template = [\n  [ 'core\/heading', [ 'level'   =&gt; 2, 'content' =&gt; 'Example Block Template' ] ],\n  [ 'core\/paragraph', [ 'content' =&gt; 'Lorem ipsum dolor sit amet labore cras venenatis.' ] ],\n];\n<\/code><\/pre>\n<p>Come puoi vedere, \u00e8 un array, che contiene blocchi nel seguente schema:<\/p>\n<ul>\n<li>Blocca spazio dei nomi<\/li>\n<li>Attributi di blocco<\/li>\n<\/ul>\n<p>Tuttavia, vogliamo utilizzare i blocchi nidificati, quindi passeremo un terzo parametro a questo array di blocchi, che \u00e8 innerBlocks.<\/p>\n<p><strong>Vuoi solo il posizionamento del blocco?<\/strong><\/p>\n<p>Nota che puoi lasciare gli attributi vuoti, per fornire semplicemente i blocchi senza contenuto impostato.<\/p>\n<p>L&#8217;array per creare lo stesso blocco che abbiamo creato nella guida del modello di blocco, abbiamo bisogno di un array pi\u00f9 complesso, in questo modo:<\/p>\n<pre><code>$block_template = [\n  [\n    'core\/group',\n    [],\n    [\n      [\n        'core\/heading',\n        [\n          'level'   =&gt; 2,\n          'content' =&gt; 'Example Block Template',\n        ]\n      ],\n      [\n        'core\/paragraph',\n        [\n          'content' =&gt; 'Lorem ipsum dolor sit amet labore cras venenatis.',\n        ]\n      ],\n      [\n        'core\/columns',\n        [],\n        [\n          [\n            'core\/column',\n            [],\n            [\n              [\n                'core\/heading',\n                [\n                  'level'   =&gt; 3,\n                  'content' =&gt; 'Sub Heading 1',\n                ]\n              ],\n              [\n                'core\/paragraph',\n                [\n                  'content' =&gt; 'Lorem ipsum dolor sit amet id erat aliquet diam ullamcorper tempus massa eleifend vivamus.',\n                ]\n              ],\n            ]\n          ],\n          [\n            'core\/column',\n            [],\n            [\n              [\n                'core\/heading',\n                [\n                  'level'   =&gt; 3,\n                  'content' =&gt; 'Sub Heading 2',\n                ]\n              ],\n              [\n                'core\/paragraph',\n                [\n                  'content' =&gt; 'Morbi augue cursus quam pulvinar eget volutpat suspendisse dictumst mattis id.',\n                ]\n              ],\n            ]\n          ],\n        ],\n      ],\n    ]\n  ]\n];\n<\/code><\/pre>\n<h2>Registra il modello di blocco<\/h2>\n<h3>Registrazione di un modello di blocco per un tipo di post esistente<\/h3>\n<p>Per registrare un modello di blocco per un tipo di post esistente (come il <code>post<\/code>tipo di post) puoi utilizzare il codice seguente per sovrascrivere l&#8217;oggetto tipo di post.<\/p>\n<pre><code>function register_block_template() {\n\n    $post_type_object                = get_post_type_object( 'post' );\n    $post_type_object-&gt;template      = $block_template;\n    $post_type_object-&gt;template_lock = 'all';\n}\nadd_action( 'init', 'register_block_template' );\n<\/code><\/pre>\n<p>Questo codice imposta semplicemente il modello e (facoltativamente) il <code>[template_lock](https:\/\/wholesomecode.ltd\/#template-lock)<\/code>tipo.<\/p>\n<p>Il codice completo sarebbe simile a questo:<\/p>\n<pre><code>function register_block_template() {\n    $block_template = [\n      [\n        'core\/group',\n        [],\n        [\n          [\n            'core\/heading',\n            [\n              'level'   =&gt; 2,\n              'content' =&gt; 'Example Block Template',\n            ]\n          ],\n          [\n            'core\/paragraph',\n            [\n              'content' =&gt; 'Lorem ipsum dolor sit amet labore cras venenatis.',\n            ]\n          ],\n          [\n            'core\/columns',\n            [],\n            [\n              [\n                'core\/column',\n                [],\n                [\n                  [\n                    'core\/heading',\n                    [\n                      'level'   =&gt; 3,\n                      'content' =&gt; 'Sub Heading 1',\n                    ]\n                  ],\n                  [\n                    'core\/paragraph',\n                    [\n                      'content' =&gt; 'Lorem ipsum dolor sit amet id erat aliquet diam ullamcorper tempus massa eleifend vivamus.',\n                    ]\n                  ],\n                ]\n              ],\n              [\n                'core\/column',\n                [],\n                [\n                  [\n                    'core\/heading',\n                    [\n                      'level'   =&gt; 3,\n                      'content' =&gt; 'Sub Heading 2',\n                    ]\n                  ],\n                  [\n                    'core\/paragraph',\n                    [\n                      'content' =&gt; 'Morbi augue cursus quam pulvinar eget volutpat suspendisse dictumst mattis id.',\n                    ]\n                  ],\n                ]\n              ],\n            ],\n          ],\n        ]\n      ]\n    ];\n\n    $post_type_object                = get_post_type_object( 'post' );\n    $post_type_object-&gt;template      = $block_template;\n    $post_type_object-&gt;template_lock = 'all';\n}\nadd_action( 'init', 'register_block_template' );\n<\/code><\/pre>\n<h3>Registrazione di un modello di blocco per un nuovo tipo di post<\/h3>\n<p>Se stai registrando un tipo di post, puoi passare il modello <code>template<\/code>nell&#8217;argomento di <code>register_post_type<\/code>.<\/p>\n<p>Puoi anche passare l&#8217; <code>[template_lock](https:\/\/wholesomecode.ltd\/#template-lock)<\/code>argomento in <code>register_post_type<\/code>.<\/p>\n<h3>Blocco modello<\/h3>\n<p>L&#8217; <code>template_lock<\/code>argomento pu\u00f2 fare diverse cose a seconda dell&#8217;argomento che gli viene passato. Questi sono elencati nella <a href=\"https:\/\/developer.wordpress.org\/block-editor\/developers\/block-api\/block-templates\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida allo sviluppo di Gutenberg<\/a> come:<\/p>\n<ul>\n<li><code>all<\/code>\u2014 impedisce tutte le operazioni. Non \u00e8 possibile inserire nuovi blocchi, spostare blocchi esistenti o eliminare blocchi.<\/li>\n<li><code>insert<\/code>\u2014 impedisce l&#8217;inserimento o la rimozione di blocchi, ma consente di spostare i blocchi esistenti.<\/li>\n<\/ul>\n<p><strong>Il blocco del modello non funziona sui blocchi nidificati<\/strong><\/p>\n<p>Il blocco del modello funziona solo sui blocchi di livello superiore. Usa questo a tuo vantaggio creando un layout con intestazioni fisse, immagini e paragrafi e un&#8217;area di gruppo in cui il tuo cliente pu\u00f2 inserire qualsiasi contenuto gli piace.<\/p>\n<p>Puoi anche <a href=\"https:\/\/wholesomecode.ltd\/guides\/template-innerblocks-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">creare un modello di blocco nidificato personalizzato con InnerBlocks<\/a>.<\/p>\n<p>Puoi anche <a href=\"https:\/\/wholesomecode.ltd\/#allowed-block-types\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">limitare i blocchi che puoi inserire in determinati tipi di post<\/a>.<\/p>\n<h2>Usa il modello di blocco<\/h2>\n<p>Per utilizzare il modello di blocco basta creare un nuovo post (o un tipo di post personalizzato a seconda di come hai configurato le cose). Il modello verr\u00e0 inserito e ora avrai aree di contenuto fisse sulla tua pagina.<\/p>\n<p>L&#8217;inserimento di un post mostra il modello di blocco<\/p>\n<p>Puoi limitare i blocchi disponibili per vari tipi di post utilizzando il codice seguente.<\/p>\n<pre><code>function filter_allowed_block_types( $allowed_block_types, $post) {\n\n  if ($post-&gt;post_type !== 'post') {\n    return $allowed_block_types;\n  }\n\n  $allowed_block_types = [\n    'core\/column',\n    'core\/columns',\n    'core\/group',\n    'core\/heading',\n    'core\/paragraph',\n  ];\n\n  return $allowed_block_types;\n}\nadd_filter( 'allowed_block_types', 'filter_allowed_block_types', 10, 2 );\n<\/code><\/pre>\n<p>Il codice sopra limita i blocchi consentiti nel <code>post<\/code>tipo di post a quanto segue:<\/p>\n<ul>\n<li>\n<p>Colonna (<code>core\/column<\/code>)<\/p>\n<\/li>\n<li>\n<p>Colonne (<code>core\/column<\/code>s)<\/p>\n<\/li>\n<li>\n<p>Gruppo (<code>core\/group<\/code>)<\/p>\n<\/li>\n<li>\n<p>Intestazione (<code>core\/heading<\/code>)<\/p>\n<\/li>\n<li>\n<p>Paragrafo (<code>core\/paragraph<\/code>)<\/p>\n<\/li>\n<li>\n<p>Hai bisogno di qualcosa di pi\u00f9 flessibile? Prova invece <a href=\"https:\/\/wholesomecode.ltd\/guides\/register-block-pattern-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a registrare un pattern di blocco<\/a><\/p>\n<\/li>\n<li>\n<p>Hai bisogno di qualcosa che si applichi ai blocchi figlio? Prova <a href=\"https:\/\/wholesomecode.ltd\/guides\/template-innerblocks-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a registrare un modello InnerBlocks<\/a><\/p>\n<\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nella mia guida precedente ho esplorato il potere dei modelli a blocchi. I modelli di blocco sono simili, ma invece di fare affidamento sul tuo client per inserire schemi di blocco nell&#8217;editor, ti d\u00e0 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":223608,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,928,720,865],"tags":[1168],"class_list":["post-229068","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-soggetti","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229068","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=229068"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229068\/revisions"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}