{"id":229017,"date":"2022-10-16T10:01:00","date_gmt":"2022-10-16T07:01:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229017"},"modified":"2022-11-09T05:12:16","modified_gmt":"2022-11-09T02:12:16","slug":"utilizzo-dei-meta-campi-post-per-memorizzare-gli-attributi-nelleditor-blocchi-di-wordpress-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/utilizzo-dei-meta-campi-post-per-memorizzare-gli-attributi-nelleditor-blocchi-di-wordpress-gutenberg\/","title":{"rendered":"Utilizzo dei meta campi post per memorizzare gli attributi nell&#8217;editor blocchi di WordPress (Gutenberg)"},"content":{"rendered":"\n<p>Quando registri e memorizzi gli attributi nell&#8217;editor di blocchi di WordPress (Gutenberg) hai la possibilit\u00e0 di salvarli come meta meta, invece dei soliti attributi di blocco.<\/p>\n<p>Usando questo metodo, potresti avere un&#8217;impostazione nel tuo blocco che pu\u00f2 controllare qualcosa a livello di post o sul modello.<\/p>\n<p><strong>Una nota importante sul rendering degli attributi dei meta post<\/strong><\/p>\n<p>Non puoi eseguire il rendering dei meta attributi dei post utilizzando un metodo di salvataggio JavaScript. Il team di Gutenberg ha deciso di impedirlo, perch\u00e9 i blocchi che rendono i meta campi dei post possono essere facilmente interrotti a causa della modifica dei meta post in altre parti del post.<\/p>\n<p>In questa guida espanderemo ci\u00f2 che abbiamo gi\u00e0 creato nella nostra <a href=\"https:\/\/wholesomecode.ltd\/guides\/creating-plugin-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida ai plugin di WordPress Gutenberg<\/a> e anche nella <a href=\"https:\/\/wholesomecode.ltd\/guides\/php-render-block-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida ai blocchi dinamici<\/a>.<\/p>\n<h2>Prerequisiti<\/h2>\n<ul>\n<li>Familiarizzare con <a href=\"https:\/\/wholesomecode.ltd\/guides\/creating-plugin-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la creazione di plugin per WordPress Gutenberg<\/a><\/li>\n<li>Familiarizzare <a href=\"https:\/\/wholesomecode.ltd\/guides\/php-render-block-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">con i blocchi dinamici e il rendering lato server<\/a><\/li>\n<\/ul>\n<h2>Registrazione del Post Meta in PHP<\/h2>\n<p>Prima di poter utilizzare un meta campo post in JavaScript, dobbiamo assicurarci di averlo registrato in PHP utilizzando <code>register_meta<\/code>e che l&#8217; <code>show_in_rest<\/code>argomento sia stato impostato su true.<\/p>\n<p>Seguendo la <a href=\"https:\/\/wholesomecode.ltd\/guides\/php-render-block-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida al blocco dinamico<\/a>, apri il file PHP radice del plugin (in questo caso <code>wholesome-plugin.php<\/code>) e aggiungi il seguente codice in fondo a quel file dopo tutte le altre funzioni:<\/p>\n<pre><code>function wholesomecode_wholesome_plugin_register_post_meta() {\n    register_meta(\n        'post',\n        '_wholesomecode_wholesome_plugin_block_text',\n        [\n            'auth_callback' =&gt; '__return_true',\n            'default'       =&gt; __( 'Wholesome Plugin \u2013 hello from the editor!', 'wholesome-plugin' ),\n            'show_in_rest'  =&gt; true,\n            'single'        =&gt; true,\n            'type'          =&gt; 'string',\n        ]\n    );\n}\nadd_action( 'init', 'wholesomecode_wholesome_plugin_register_post_meta' );\n<\/code><\/pre>\n<p>Questo codice registra un meta campo chiamato <code>_wholesomecode_wholesome_plugin_block_text<\/code>per il <code>post<\/code>tipo di post. Garantisce inoltre che l&#8217;API REST possa accedere a questo meta campo con il <code>show_in_rest<\/code>valore impostato su true.<\/p>\n<p>Stiamo anche passando la funzione <code>__return_true<\/code>all&#8217;argomento <code>auth_callback<\/code>per assicurarci di avere i permessi per accedere a questo parametro. Se volessimo una maggiore sicurezza per questo parametro, lo modificheremmo in una funzione personalizzata che controlla un determinato ruolo utente.<\/p>\n<h2>Registrazione degli attributi Post Meta in JavaScript<\/h2>\n<p>Ancora una volta, seguendo la guida precedente, apri <code>\/src\/index.js<\/code>e sostituisci <code>attributes<\/code>con il seguente:<\/p>\n<pre><code>attributes: {\n  blockText: {\n    meta: '_wholesomecode_wholesome_plugin_block_text',\n    source: 'meta',\n  },\n},\n<\/code><\/pre>\n<p>Invece di indicare il tipo di attributo e assegnare un valore predefinito, definiamo invece la meta chiave da cui proverr\u00e0 l&#8217;attributo data e indichiamo che <code>source<\/code>l&#8217;attributo \u00e8 <code>meta<\/code>.<\/p>\n<p>Come indicato nell&#8217;avviso all&#8217;inizio di questa guida, non sei in grado di accedere agli attributi del post meta field tramite il <code>save<\/code>metodo JavaScript, quindi compila il plugin con <code>npm start<\/code>e vediamo come possiamo generare il meta.<\/p>\n<h2>Rendering del Post Meta<\/h2>\n<p>Poich\u00e9 abbiamo salvato il nostro attributo come post meta, potremmo riprodurlo ovunque in WordPress utilizzando <code>get_post_meta<\/code>(a condizione che abbiamo il <code>$post_id<\/code>):<\/p>\n<pre><code>get_post_meta( $post_id, '_wholesomecode_wholesome_plugin_block_text', true );\n<\/code><\/pre>\n<p>Continuando la <a href=\"https:\/\/wholesomecode.ltd\/guides\/php-render-block-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">guida al blocco dinamico<\/a>, vediamo come possiamo accedere a questo attributo lato server in PHP.<\/p>\n<p>Il meta non \u00e8 disponibile tramite il <code>$attributes<\/code>parametro di <code>render_callback<\/code>, poich\u00e9 gli attributi post meta non trasmettono il loro valore a questo parametro, ma possiamo accedere <code>$post<\/code>all&#8217;oggetto globale per ottenere l&#8217;ID del post.<\/p>\n<p>Con questo in mente, aggiorniamo il nostro <code>register_block_type<\/code>per produrre il meta del post:<\/p>\n<pre><code>register_block_type(\n  'wholesomecode\/wholesome-plugin',\n  array(\n    'editor_script'   =&gt; 'wholesomecode-wholesome-plugin-block-editor',\n    'editor_style'    =&gt; 'wholesomecode-wholesome-plugin-block-editor',\n    'render_callback' =&gt; function( $attributes, $content) {\n      global $post;\n      $block_text = get_post_meta( $post-&gt;ID, '_wholesomecode_wholesome_plugin_block_text', true );\n      return \"&lt;p class='wp-block-wholesomecode-wholesome-plugin'&gt;$block_text&lt;\/p&gt;\";\n    },\n    'style'           =&gt; 'wholesomecode-wholesome-plugin-block',) );\n<\/code><\/pre>\n<p>Nota che non abbiamo pi\u00f9 bisogno di registrare <code>attributes<\/code>qui, perch\u00e9 stiamo solo accedendo al post meta campo tramite la <code>get_post_meta<\/code>funzione.<\/p>\n<h3>Usando il blocco<\/h3>\n<p>Questo non \u00e8 il miglior caso d&#8217;uso di questo tipo di meta, tuttavia quando utilizziamo il blocco, possiamo vedere che poich\u00e9 stiamo memorizzando gli attributi come meta post, se aggiorniamo l&#8217;attributo in un blocco, aggiorna tutti i blocchi, come il post meta viene archiviato sul post, non sul singolo blocco:<\/p>\n<p>Post Meta attributi in azione<\/p>\n<ul>\n<li>Dai un&#8217;occhiata alla creazione <a href=\"https:\/\/wholesomecode.ltd\/guides\/template-innerblocks-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">di blocchi figlio nidificati con il <code>InnerBlocks<\/code>componente<\/a><\/li>\n<li>Sfrutta ulteriormente il meta post in Gutenberg <a href=\"https:\/\/wholesomecode.ltd\/guides\/create-custom-meta-boxes-using-the-wordpress-block-editor-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">creando Meta Box personalizzati in Gutenberg<\/a><\/li>\n<li>Dai un&#8217;occhiata <a href=\"https:\/\/wholesomecode.ltd\/guides\/options-settings-data-wordpress-gutenberg\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">all&#8217;utilizzo delle impostazioni per memorizzare i dati nella tabella delle opzioni in Gutenberg<\/a><\/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>Quando registri e memorizzi gli attributi nell&#8217;editor di blocchi di WordPress (Gutenberg) hai la possibilit\u00e0 di salvarli come meta post, invece dei soliti attributi di blocco. Usando questo m&#8230;<\/p>\n","protected":false},"author":1,"featured_media":223685,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[918,896,939,814,720,865],"tags":[1168],"class_list":["post-229017","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-gutenberg-6","category-plugin-2","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229017","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=229017"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229017\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223685"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229017"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229017"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229017"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}