{"id":233430,"date":"2023-02-13T10:48:00","date_gmt":"2023-02-13T07:48:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233430"},"modified":"2022-11-10T23:38:44","modified_gmt":"2022-11-10T20:38:44","slug":"como-adicionar-campos-meta-de-postagem-a-barra-lateral-do-documento-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pt-pt\/como-adicionar-campos-meta-de-postagem-a-barra-lateral-do-documento-gutenberg\/","title":{"rendered":"Como adicionar campos meta de postagem \u00e0 barra lateral do documento Gutenberg"},"content":{"rendered":"\n<p>Neste post, veremos como adicionar configura\u00e7\u00f5es meta personalizadas de postagem \u00e0 barra lateral do Gutenberg, na guia &quot;Documento&quot;, em vez de depender da adi\u00e7\u00e3o de meta caixas da maneira tradicional (e honestamente muito mais manual).<\/p>\n<p>Se voc\u00ea trabalhou com o WordPress um tempo antes de Gutenberg ser uma coisa, voc\u00ea provavelmente est\u00e1 familiarizado com a adi\u00e7\u00e3o de meta de postagem personalizada com <code>[add_meta_box](https:\/\/developer.wordpress.org\/reference\/functions\/add_meta_box\/)()<\/code>. Esta fun\u00e7\u00e3o permite que voc\u00ea adicione uma meta box com seu conte\u00fado personalizado na parte inferior ou lateral ao editar uma postagem. Este m\u00e9todo ainda funciona, tamb\u00e9m no editor 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=\"Como adicionar campos meta de postagem \u00e0 barra lateral do documento Gutenberg\" ><\/a><\/p>\n<p>No entanto, parece um pouco estranho em compara\u00e7\u00e3o com o resto do conte\u00fado da barra lateral do Gutenberg. E para n\u00e3o mencionar, voc\u00ea precisaria escrever manualmente o c\u00f3digo de entrada (caixa de sele\u00e7\u00e3o, entradas de texto etc.) com PHP e tamb\u00e9m escrever c\u00f3digo adicional para salv\u00e1-los quando a postagem for atualizada. E se voc\u00ea quisesse que suas configura\u00e7\u00f5es de meta de postagem fossem din\u00e2micas (digamos que voc\u00ea quisesse ocultar um campo, a menos que algum outro campo fosse ativado), ent\u00e3o voc\u00ea teria que enfileirar manualmente um script e sim, voc\u00ea adivinhou, manipular manualmente a l\u00f3gica din\u00e2mica de esconder e mostrar. Tudo isso agora est\u00e1 desatualizado e facilitado com o novo editor Gutenberg baseado em Javascript. Podemos facilmente fazer algo assim:<\/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=\"Como adicionar campos meta de postagem \u00e0 barra lateral do documento Gutenberg\" ><\/a><\/p>\n<h2>O processo<\/h2>\n<p>O processo \u00e9 como se segue:<\/p>\n<ul>\n<li>Registramos cada meta-chave de postagem personalizada que queremos adicionar no PHP usando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>e definimos como dispon\u00edvel na API REST do WP. Este \u00e9 um passo necess\u00e1rio para disponibilizar a meta do post no editor Gutenberg.<\/li>\n<li>Criamos um arquivo Javascript e o enfileiramos especificamente para o editor (somente).<\/li>\n<li>Dentro do arquivo Javascript n\u00f3s registramos um plugin <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>dizendo para ele renderizar nosso componente.<\/li>\n<li>Dentro desse componente podemos produzir o que precisarmos. Podemos usar os componentes internos do WordPress para renderizar facilmente diferentes tipos de configura\u00e7\u00f5es. E usando o pacote de dados do WordPress, podemos buscar e atualizar os meta-valores do post imediatamente \u00e0 medida que eles s\u00e3o alterados.<\/li>\n<\/ul>\n<p>Vamos direto ao assunto, come\u00e7ando com a parte do PHP; registrando a meta do post.<\/p>\n<h2>Registrando meta de postagem<\/h2>\n<p>Para cada meta de postagem que voc\u00ea deseja adicionar \u00e0 barra lateral do Gutenberg, voc\u00ea precisar\u00e1 se registrar usando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>. Isso \u00e9 necess\u00e1rio para disponibiliz\u00e1-los atrav\u00e9s da WP REST API (que Gutenberg usa) e, portanto, dispon\u00edveis em nosso Javascript.<\/p>\n<p>No arquivo do seu tema <code>functions.php<\/code>ou em algum outro arquivo PHP ativo, adicione uma fun\u00e7\u00e3o ligada ao <code>init<\/code>gancho &#8216; &#8216;. Dentro da fun\u00e7\u00e3o, voc\u00ea repete a <code>register_post_meta()<\/code>para cada meta de postagem personalizada que deseja adicionar. A fun\u00e7\u00e3o recebe tr\u00eas argumentos; O primeiro par\u00e2metro \u00e9 o tipo de postagem para o qual voc\u00ea deseja registrar o meta (definido como string vazia para todos os tipos de postagem). O segundo par\u00e2metro \u00e9 o nome da meta-chave para sua meta. E o terceiro \u00e9 uma s\u00e9rie de configura\u00e7\u00f5es. \u00c9 aqui que definimos que essa meta deve ser acess\u00edvel na WP REST API definindo &#8216; <code>show_in_rest<\/code>&#8216; como true.<\/p>\n<p>Por exemplo, digamos que eu queira adicionar uma ativa\u00e7\u00e3o\/desativa\u00e7\u00e3o e uma entrada de texto na barra lateral do editor. Isso significa que eu chamo <code>register_post_meta()<\/code>de um tipo de valor booleano e de string, respectivamente. Eu tamb\u00e9m quero limitar esses post meta para postar apenas tipo &#8216;post&#8217;. Isso seria algo como:<\/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>Agora eu tenho uma meta-chave post <code>_my_custom_bool<\/code>e <code>_my_custom_text<\/code>pronta e dispon\u00edvel em Gutenberg. Eu recomendo que voc\u00ea os renomeie para algo que fa\u00e7a sentido para voc\u00ea.<\/p>\n<h2>Registrando nosso plugin Javascript<\/h2>\n<p>Para nossa pr\u00f3xima etapa, adicionaremos um arquivo Javascript e nos certificaremos de enfileirar usando PHP.<\/p>\n<p>Tenha em mente que eu escrevo o c\u00f3digo Javascript na sintaxe ES6. Isso significa que eu configurei uma configura\u00e7\u00e3o webpack\/Babel para compilar meu arquivo em um arquivo Javascript leg\u00edvel separado para o navegador.<\/p>\n<p>Eu tenho um guia sobre como configurar isso se voc\u00ea n\u00e3o tiver certeza de como isso funciona:<\/p>\n<p>Precisamos ter certeza de que o WordPress carrega nosso script no editor. Fazemos isso conectando uma fun\u00e7\u00e3o <code>enqueue_block_editor_assets<\/code>e chamando <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>Suponho que voc\u00ea esteja familiarizado com como enfileirar scripts e seja capaz de substituir os valores pelos seus pr\u00f3prios. Como segundo par\u00e2metro, forne\u00e7o o caminho para o arquivo de compila\u00e7\u00e3o (n\u00e3o o arquivo de origem). Para garantir que nosso script n\u00e3o seja carregado muito cedo, defino &#8216; <code>wp-edit-post<\/code>&#8216; como uma depend\u00eancia. Esse \u00e9 o pacote que precisamos para lidar com o post meta.<\/p>\n<p>Agora vamos passar para a parte Javascript.<\/p>\n<p>Primeiro precisamos chamar <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>e passar nosso componente para renderizar o painel na barra lateral do Documento Gutenberg. Essa fun\u00e7\u00e3o est\u00e1 dispon\u00edvel no <code>wp.plugins<\/code>pacote, ent\u00e3o eu a destruo no topo. Gosto de manter meus arquivos organizados, ent\u00e3o crio outro arquivo; &#8220;awp-custom-postmeta-fields.js&quot; para conter o componente renderizado e import\u00e1-lo.<\/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>Escrevendo nosso componente<\/h2>\n<p>Vamos come\u00e7ar a criar um componente b\u00e1sico que n\u00e3o faz nada al\u00e9m de apenas sentar no lugar correto, ent\u00e3o vamos tirar isso do caminho primeiro. Para renderizar um componente na barra lateral Documento do Gutenberg, usamos o <code>[PluginDocumentSettingPanel](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/slotfills\/plugin-document-setting-panel\/)<\/code>componente. Podemos definir atributos como a <code>title<\/code>e. E o que estiver dentro ser\u00e1 renderizado na barra lateral do Documento. Por enquanto, estou apenas enviando algum texto &quot;Ol\u00e1&quot;.<code>icon``className<\/code><\/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>Com o c\u00f3digo acima (compilado), obtemos isso:<\/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=\"Como adicionar campos meta de postagem \u00e0 barra lateral do documento Gutenberg\" ><\/a><\/p>\n<p>Incr\u00edvel. No entanto, queremos adicionar algumas entradas. Mas para conectar essas entradas com nosso meta de postagem personalizado, precisamos compor nosso componente com os componentes de ordem superior <code>withSelect<\/code>(para buscar os valores meta do post) e <code>withDispatch<\/code>(para atualizar os valores meta do post). Pode parecer um pouco complexo se voc\u00ea n\u00e3o trabalhou com componentes de ordem superior antes, mas depois de entender, \u00e9 bem simples.<\/p>\n<p>Precisamos primeiro mudar nossa <code>export<\/code>declara\u00e7\u00e3o. Em vez de apenas retornar nosso componente sozinho, precisamos comp\u00f4-lo com <code>withSelect<\/code>e <code>withDispatch<\/code>, ambos no <code>wp.data<\/code>pacote.<\/p>\n<p>Dentro <code>withSelect()<\/code>temos acesso \u00e0 poderosa <code>select()<\/code>fun\u00e7\u00e3o. Usando <code>select()<\/code>podemos buscar os meta-valores da postagem atual. Tamb\u00e9m podemos buscar o tipo de postagem atual, se quisermos. Como mencionei anteriormente ao registrar meta de postagem, podemos limitar as metas de postagem a um tipo de postagem espec\u00edfico. Se buscarmos o tipo de postagem da postagem atual, podemos em nosso componente certificar-nos de apenas renderizar nosso c\u00f3digo se estivermos no tipo de postagem correto. Mais sobre isso mais tarde.<\/p>\n<p>Em <code>withDispatch()<\/code>podemos definir fun\u00e7\u00f5es que podemos executar em nosso componente. Fazemos uma fun\u00e7\u00e3o que vai usar <code>dispatch()<\/code>para atualizar o post meta.<\/p>\n<p>Vamos mudar a <code>export<\/code>declara\u00e7\u00e3o para isso:<\/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>Tamb\u00e9m precisamos desestruturar estes dos seguintes pacotes no topo do arquivo:<\/p>\n<pre><code>const { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;<\/code><\/pre>\n<p>Com isso nosso <code>AWP_Custom_Plugin<\/code>componente tem acesso a tr\u00eas novos adere\u00e7os; <code>postMeta<\/code>que cont\u00e9m todos os meta-valores de postagem para a postagem atual; <code>postType<\/code>que cont\u00e9m o tipo de postagem da postagem atual; e por fim a fun\u00e7\u00e3o <code>setPostMeta()<\/code>que fizemos na <code>withDispatch()<\/code>qual atualizar\u00e1 a meta do post.<\/p>\n<p>Assim, em nossa defini\u00e7\u00e3o de componente, podemos desestruturar esses tr\u00eas novos adere\u00e7os;<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n...<\/code><\/pre>\n<p>E agora podemos adicionar algumas entradas \u00e0 nossa renderiza\u00e7\u00e3o, garantindo que elas exibam o valor atual e que atualizem a meta do post no evento on change. Eu registrei um booleano e uma string, ent\u00e3o como exemplo vou adicionar um <code>ToggleControl<\/code>para altern\u00e2ncia e um simples <code>TextControl<\/code>para entrada de texto.<\/p>\n<p>Se voc\u00ea n\u00e3o tiver certeza sobre os componentes embutidos no WordPress, eu tenho um e-book totalmente gratuito que cobre praticamente a maioria dos componentes dispon\u00edveis no Gutenberg &#8211; incluindo quais adere\u00e7os podemos definir para cada um.<\/p>\n<p>Aqui est\u00e1 um exemplo de como nosso componente pode ficar:<\/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>Na linha <code>#9-10<\/code>e <code>#16-17<\/code>encontramos as partes cr\u00edticas. Definimos o valor atual das entradas para <code>postMeta.&lt;your meta key here&gt;<\/code>e em seu evento onChange executamos a fun\u00e7\u00e3o <code>setPostMeta( { &lt;your meta key here&gt;: ... } )<\/code>para o novo valor atualizado.<\/p>\n<p>Finalmente, uma palavra sobre como limitar seu componente a um tipo de postagem espec\u00edfico. No nosso <code>withSelect()<\/code>estamos passando o tipo de postagem do post atual no prop <code>postType<\/code>. Tudo o que precisamos fazer em nosso componente \u00e9 comparar esse valor com um tipo de postagem e retornar null se n\u00e3o corresponder:<\/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 \u00e9 isso! Nosso c\u00f3digo deve estar funcionando agora. O resultado final deve ser algo como:<\/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=\"Como adicionar campos meta de postagem \u00e0 barra lateral do documento Gutenberg\" ><\/a><\/p>\n<h2>C\u00f3digo final<\/h2>\n<p>Registrando o post meta e enfileirando o arquivo 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>Os dois arquivos 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 de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nesta postagem, veremos como adicionar configura\u00e7\u00f5es meta personalizadas de postagem \u00e0 barra lateral do WordPress Gutenberg, na guia &#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":[898,898,722,722,837,941,941,1110,816,816,837,846,846,867,867],"tags":[1170],"class_list":["post-233430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo-2","category-desenvolvedor","category-guia-para-iniciantes","category-gutenberg-8","category-n-a","category-plug-ins","category-tutoriais","category-wordpress-8","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=233430"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/posts\/233430\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media\/153560"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=233430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=233430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=233430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}