{"id":233436,"date":"2023-02-13T10:23:00","date_gmt":"2023-02-13T07:23:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233436"},"modified":"2022-11-10T23:40:38","modified_gmt":"2022-11-10T20:40:38","slug":"come-aggiungere-post-meta-campi-alla-barra-laterale-del-documento-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-aggiungere-post-meta-campi-alla-barra-laterale-del-documento-gutenberg\/","title":{"rendered":"Come aggiungere post meta campi alla barra laterale del documento Gutenberg"},"content":{"rendered":"\n<p>In questo post vedremo come aggiungere meta impostazioni personalizzate dei post alla barra laterale di Gutenberg, nella scheda &quot;Documento&quot;, piuttosto che fare affidamento sull&#8217;aggiunta di meta box nel modo tradizionale (e onestamente molto pi\u00f9 manuale).<\/p>\n<p>Se hai lavorato con WordPress un po&#8217; prima che Gutenberg diventasse una cosa, probabilmente hai familiarit\u00e0 con l&#8217;aggiunta di meta post personalizzati con <code>[add_meta_box](https:\/\/developer.wordpress.org\/reference\/functions\/add_meta_box\/)()<\/code>. Questa funzione ti consente di aggiungere una meta box con i tuoi contenuti personalizzati in basso o a lato durante la modifica di un post. Questo metodo funziona ancora, anche nell&#8217;editor di Gutenberg!<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51080f2022.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-153559-61e51080f2022.png\" alt=\"Come aggiungere post meta campi alla barra laterale del documento Gutenberg\" ><\/a><\/p>\n<p>Tuttavia, sembra un po&#8217; strano rispetto al resto del contenuto della barra laterale di Gutenberg. E per non parlare del fatto che dovresti scrivere manualmente il codice di input (casella di controllo, input di testo ecc.) Con PHP e anche scrivere codice aggiuntivo per salvarlo quando il post viene aggiornato. E se volevi che le tue meta impostazioni del post fossero dinamiche (diciamo che volevi nascondere un campo a meno che non fosse attivato qualche altro campo), allora dovresti accodare manualmente uno script e s\u00ec, hai indovinato, gestire manualmente la logica dinamica di nascondersi e mostrarsi. Tutto questo ora \u00e8 obsoleto e reso pi\u00f9 semplice con il nuovo editor Gutenberg basato su Javascript. Possiamo facilmente fare qualcosa del genere:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.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-153559-61e51081c74ff.png\" alt=\"Come aggiungere post meta campi alla barra laterale del documento Gutenberg\" ><\/a><\/p>\n<h2>Il processo<\/h2>\n<p>Il processo \u00e8 il seguente:<\/p>\n<ul>\n<li>Registriamo ogni meta chiave post personalizzata che vogliamo aggiungere in PHP utilizzando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>e la impostiamo come disponibile nell&#8217;API REST di WP. Questo \u00e8 un passaggio necessario per rendere disponibile il meta post nell&#8217;editor di Gutenberg.<\/li>\n<li>Creiamo un file Javascript e lo accodiamo in modo specifico all&#8217;editor (solo).<\/li>\n<li>All&#8217;interno del file Javascript registriamo un plugin <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>dicendogli di rendere il nostro componente.<\/li>\n<li>All&#8217;interno di quel componente possiamo produrre tutto ci\u00f2 di cui abbiamo bisogno. Possiamo utilizzare i componenti integrati di WordPress per eseguire facilmente il rendering di diversi tipi di impostazioni. E utilizzando il pacchetto dati di WordPress possiamo recuperare e aggiornare i meta valori dei post immediatamente quando vengono modificati.<\/li>\n<\/ul>\n<p>Entriamo subito, iniziando con la parte PHP; registrazione del meta post.<\/p>\n<h2>Registrazione post meta<\/h2>\n<p>Per ogni meta post che desideri aggiungere alla barra laterale di Gutenberg, dovrai registrarti utilizzando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>. Ci\u00f2 \u00e8 necessario per renderli disponibili tramite WP REST API (che utilizza Gutenberg) e quindi disponibili nel nostro Javascript.<\/p>\n<p>Nel file del tuo tema <code>functions.php<\/code>o in qualche altro file PHP attivo, aggiungi una funzione agganciata all&#8217;hook &#8216; <code>init<\/code>&#8216;. All&#8217;interno della funzione ripeti a <code>register_post_meta()<\/code>per ogni meta post personalizzato che desideri aggiungere. La funzione accetta tre argomenti; il primo parametro \u00e8 il tipo di post per cui vuoi registrare il meta (impostato come stringa vuota per tutti i tipi di post). Il secondo parametro \u00e8 il nome della meta chiave per la tua meta. E il terzo \u00e8 una serie di impostazioni. \u00c8 qui che definiamo che questo meta dovrebbe essere accessibile nell&#8217;API REST di WP impostando &#8216; <code>show_in_rest<\/code>&#8216; su true.<\/p>\n<p>Ad esempio, diciamo che voglio aggiungere un interruttore on\/off e un input di testo alla barra laterale dell&#8217;editor. Ci\u00f2 significa che chiamo <code>register_post_meta()<\/code>rispettivamente un tipo di valore booleano e un tipo di stringa. Voglio anche limitare questi meta post al solo tipo di post &#8216;post&#8217;. Sembrerebbe qualcosa del tipo:<\/p>\n<pre><code>add_action( 'init', function() {\n    register_post_meta( 'post', '_my_custom_bool', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean',\n    ] );\n\u00a0\n    register_post_meta( 'post', '_my_custom_text', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'string',\n    ] );\n} );<\/code><\/pre>\n<p>Ora ho una chiave meta post <code>_my_custom_bool<\/code>e <code>_my_custom_text<\/code>pronta e disponibile in Gutenberg. Ti consiglio di rinominarli in qualcosa che abbia senso per te.<\/p>\n<h2>Registrazione del nostro plugin Javascript<\/h2>\n<p>Per il nostro prossimo passo aggiungeremo un file Javascript e ci assicureremo di accodarlo usando PHP.<\/p>\n<p>Tieni presente che scrivo il codice Javascript nella sintassi ES6. Ci\u00f2 significa che ho impostato una configurazione webpack\/Babel per compilare il mio file in un file Javascript leggibile separato per il browser.<\/p>\n<p>Ho una guida su come configurarlo se non sei sicuro di come funziona:<\/p>\n<p>Dobbiamo assicurarci che WordPress carichi il nostro script nell&#8217;editor. Lo facciamo agganciando una funzione <code>enqueue_block_editor_assets<\/code>e chiamando <code>[wp_enqueue_script](https:\/\/developer.wordpress.org\/reference\/functions\/wp_enqueue_script\/)()<\/code>:<\/p>\n<pre><code>add_action( 'enqueue_block_editor_assets', function() {\n    wp_enqueue_script(\n        'awp-custom-meta-plugin', \n        get_template_directory_uri(). '\/assets\/js\/gutenberg\/plugin-awp-custom-postmeta.js', \n        [ 'wp-edit-post' ],\n        false,\n        false\n    );\n} );<\/code><\/pre>\n<p>Presumo che tu abbia familiarit\u00e0 con come accodare gli script e sei in grado di sostituire i valori con i tuoi. Come secondo parametro fornisco il percorso del file di build (non il file di origine). Per garantire che il nostro script non venga caricato troppo presto, ho impostato &#8216; <code>wp-edit-post<\/code>&#8216; come dipendenza. Questo \u00e8 il pacchetto di cui abbiamo bisogno per gestire post meta.<\/p>\n<p>Passiamo ora alla parte Javascript.<\/p>\n<p>Per prima cosa dobbiamo chiamare <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>e passare il nostro componente per il rendering del pannello nella barra laterale del documento Gutenberg. Questa funzione \u00e8 disponibile nel <code>wp.plugins<\/code>pacchetto, quindi la destrutturo in alto. Mi piace mantenere i miei file in ordine, quindi creo un altro file; &quot;awp-custom-postmeta-fields.js&quot; per contenere il componente sottoposto a rendering e importarlo.<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\n\u00a0\nimport AWP_Custom_Plugin from '.\/awp-custom-postmeta-fields';\n\u00a0\nregisterPlugin( 'my-custom-postmeta-plugin', {\n    render() {\n        return(&lt;AWP_Custom_Plugin \/&gt;);\n    }\n} );<\/code><\/pre>\n<h2>Scrivendo il nostro componente<\/h2>\n<p>Iniziamo a creare un componente di base che non faccia nient&#8217;altro che sedersi l\u00ec nel posto giusto, quindi prima lo togliamo di mezzo. Per eseguire il rendering di un componente nella barra laterale del documento di Gutenberg, utilizziamo il <code>[PluginDocumentSettingPanel](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/slotfills\/plugin-document-setting-panel\/)<\/code>componente. Possiamo impostare attributi come a <code>title<\/code>, <code>icon<\/code>e <code>className<\/code>. E tutto ci\u00f2 che c&#8217;\u00e8 dentro verr\u00e0 visualizzato nella barra laterale del documento. Per ora sto solo emettendo del testo &quot;Ciao&quot;.<\/p>\n<pre><code>const { __ } = wp.i18n;\nconst { PluginDocumentSettingPanel } = wp.editPost;\nconst { PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin =() =&gt; {\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                Hello there.\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}\n\u00a0\nexport default AWP_Custom_Plugin;<\/code><\/pre>\n<p>Con il codice sopra (compilato), otteniamo questo:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e510828c932.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-153559-61e510828c932.png\" alt=\"Come aggiungere post meta campi alla barra laterale del documento Gutenberg\" ><\/a><\/p>\n<p>Stupendo. Tuttavia vogliamo aggiungere alcuni input. Ma per collegare questi input con il nostro meta post personalizzato, dobbiamo comporre il nostro componente con i componenti di ordine superiore <code>withSelect<\/code>(per recuperare i meta valori del post) e <code>withDispatch<\/code>(per aggiornare i meta valori del post). Potrebbe sembrare un po&#8217; complesso se non hai mai lavorato con componenti di ordine superiore prima, ma una volta che ci giri intorno, \u00e8 piuttosto semplice.<\/p>\n<p>Dobbiamo prima cambiare la nostra <code>export<\/code>affermazione. Invece di restituire solo il nostro componente, dobbiamo comporlo con <code>withSelect<\/code>e <code>withDispatch<\/code>, entrambi nel <code>wp.data<\/code>pacchetto.<\/p>\n<p>All&#8217;interno <code>withSelect()<\/code>abbiamo accesso alla potente <code>select()<\/code>funzione. Usando <code>select()<\/code>possiamo recuperare i meta valori del post corrente. Possiamo anche recuperare il tipo di post corrente, se lo desideriamo. Come accennato in precedenza durante la registrazione di post meta, possiamo limitare i post meta a un tipo di post specifico. Se recuperiamo il tipo di post del post corrente, nel nostro componente possiamo assicurarci di eseguire il rendering del nostro codice solo se siamo nel tipo di post corretto. Ne parleremo pi\u00f9 avanti.<\/p>\n<p>In <code>withDispatch()<\/code>possiamo definire funzioni che possiamo eseguire nel nostro componente. Creiamo una funzione che utilizzer\u00e0 <code>dispatch()<\/code>per aggiornare il post meta.<\/p>\n<p>Modifichiamo l&#8217; <code>export<\/code>affermazione in questa:<\/p>\n<pre><code>export default compose( [\n    withSelect( (select) =&gt; {     \n        return {\n            postMeta: select( 'core\/editor' ).getEditedPostAttribute( 'meta' ),\n            postType: select( 'core\/editor' ).getCurrentPostType(),\n        };\n    } ),\n    withDispatch( (dispatch) =&gt; {\n        return {\n            setPostMeta( newMeta) {\n                dispatch( 'core\/editor' ).editPost( { meta: newMeta } );\n            }\n        };\n    }) ] )( AWP_Custom_Plugin );<\/code><\/pre>\n<p>Abbiamo anche bisogno di destrutturarli dai seguenti pacchetti nella parte superiore del file:<\/p>\n<pre><code>const { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;<\/code><\/pre>\n<p>Con questo il nostro <code>AWP_Custom_Plugin<\/code>componente ha accesso a tre nuovi oggetti di scena; <code>postMeta<\/code>che contiene tutti i meta valori del post nel post corrente; <code>postType<\/code>che contiene il tipo di post del post corrente; e infine la funzione <code>setPostMeta()<\/code>che abbiamo creato in <code>withDispatch()<\/code>cui aggiorner\u00e0 il meta del post.<\/p>\n<p>Quindi nella nostra definizione dei componenti possiamo destrutturare quei tre nuovi oggetti di scena;<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n...<\/code><\/pre>\n<p>E ora possiamo aggiungere alcuni input al nostro rendering, assicurandoci che visualizzino il valore corrente e che aggiornino il meta post nell&#8217;evento on change. Ho registrato un booleano e una stringa, quindi come esempio aggiunger\u00f2 a <code>ToggleControl<\/code>per un interruttore e un semplice <code>TextControl<\/code>per un input di testo.<\/p>\n<p>Se non sei sicuro dei componenti integrati in WordPress, ho un e-book completamente gratuito che copre praticamente la maggior parte dei componenti disponibili in Gutenberg, inclusi gli oggetti di scena che possiamo impostare per ciascuno.<\/p>\n<p>Ecco un esempio di come potrebbe apparire il nostro componente:<\/p>\n<pre><code>const { ToggleControl, TextControl, PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } icon=\"edit\" initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                &lt;ToggleControl\n                    label={ __( 'You can toggle me on or off', 'txtdomain') }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_bool: value }) }\n                    checked={ postMeta._my_custom_bool }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n            &lt;PanelRow&gt;\n                &lt;TextControl\n                    label={ __( 'Write some text, if you like', 'txtdomain') }\n                    value={ postMeta._my_custom_text }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_text: value }) }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}<\/code><\/pre>\n<p>In linea <code>#9-10<\/code>e <code>#16-17<\/code>troviamo le parti critiche. Impostiamo il valore corrente degli input su <code>postMeta.&lt;your meta key here&gt;<\/code>e nel loro evento onChange eseguiamo la funzione <code>setPostMeta( { &lt;your meta key here&gt;: ... } )<\/code>sul nuovo valore aggiornato.<\/p>\n<p>Infine una parola su come limitare il tuo componente a un tipo di post specifico. Nel nostro <code>withSelect()<\/code>stiamo passando il tipo di post del post corrente nel prop <code>postType<\/code>. Tutto ci\u00f2 che dobbiamo fare nel nostro componente \u00e8 confrontare questo valore con un tipo di post e restituire null se non corrisponde:<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {  \n    if ('post' !== postType) return null;  \/\/ Will only render component for post type 'post'\n\u00a0\n    return(\n    ...<\/code><\/pre>\n<p>E questo \u00e8 tutto! Il nostro codice ora dovrebbe funzionare. Il risultato finale dovrebbe essere qualcosa del tipo:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153559-61e51081c74ff.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-153559-61e51081c74ff.png\" alt=\"Come aggiungere post meta campi alla barra laterale del documento Gutenberg\" ><\/a><\/p>\n<h2>Codice finale<\/h2>\n<p>Registrazione del post meta e accodamento del file Javascript:<\/p>\n<pre><code>add_action( 'init', function() {\n    register_post_meta( 'post', '_my_custom_bool', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'boolean',\n    ] );\n\u00a0\n    register_post_meta( 'post', '_my_custom_text', [\n        'show_in_rest' =&gt; true,\n        'single' =&gt; true,\n        'type' =&gt; 'string',\n    ] );\n} );\n\u00a0\nadd_action( 'enqueue_block_editor_assets', function() {\n    wp_enqueue_script(\n        'awp-custom-meta-plugin', \n        get_template_directory_uri(). '\/assets\/js\/gutenberg\/plugin-awp-custom-postmeta.js', \n        [ 'wp-edit-post' ],\n        false,\n        false\n    );\n} );<\/code><\/pre>\n<p>I due file Javascript:<\/p>\n<pre><code>const { registerPlugin } = wp.plugins;\n\u00a0\nimport AWP_Custom_Plugin from '.\/awp-custom-postmeta-fields';\n\u00a0\nregisterPlugin( 'my-custom-postmeta-plugin', {\n    render() {\n        return(&lt;AWP_Custom_Plugin \/&gt;);\n    }\n} );<\/code><\/pre>\n<pre><code>const { __ } = wp.i18n;\nconst { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;\n\u00a0\nconst { PluginDocumentSettingPanel } = wp.editPost;\nconst { ToggleControl, TextControl, PanelRow } = wp.components;\n\u00a0\nconst AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n    if ('post' !== postType) return null;  \/\/ Will only render component for post type 'post'\n    return(\n        &lt;PluginDocumentSettingPanel title={ __( 'My Custom Post meta', 'txtdomain') } icon=\"edit\" initialOpen=\"true\"&gt;\n            &lt;PanelRow&gt;\n                &lt;ToggleControl\n                    label={ __( 'You can toggle me on or off', 'txtdomain') }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_bool: value }) }\n                    checked={ postMeta._my_custom_bool }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n            &lt;PanelRow&gt;\n                &lt;TextControl\n                    label={ __( 'Write some text, if you like', 'txtdomain') }\n                    value={ postMeta._my_custom_text }\n                    onChange={ (value) =&gt; setPostMeta( { _my_custom_text: value }) }\n                \/&gt;\n            &lt;\/PanelRow&gt;\n        &lt;\/PluginDocumentSettingPanel&gt;\n    );\n}\n\u00a0\nexport default compose( [\n    withSelect( (select) =&gt; {     \n        return {\n            postMeta: select( 'core\/editor' ).getEditedPostAttribute( 'meta' ),\n            postType: select( 'core\/editor' ).getCurrentPostType(),\n        };\n    } ),\n    withDispatch( (dispatch) =&gt; {\n        return {\n            setPostMeta( newMeta) {\n                dispatch( 'core\/editor' ).editPost( { meta: newMeta } );\n            }\n        };\n    }) ] )( AWP_Custom_Plugin );<\/code><\/pre>\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>In questo post vedremo come aggiungere meta impostazioni personalizzate dei post alla barra laterale Gutenberg di WordPress, nella scheda &#8220;Documento&#8221;.<\/p>\n","protected":false},"author":1,"featured_media":153560,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,896,720,835,939,939,1110,814,814,835,720,844,844,865,865],"tags":[1168],"class_list":["post-233436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","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\/233436","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=233436"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/233436\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/153560"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=233436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=233436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=233436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}