{"id":233389,"date":"2023-02-13T10:53:00","date_gmt":"2023-02-13T07:53:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233389"},"modified":"2022-11-10T23:25:39","modified_gmt":"2022-11-10T20:25:39","slug":"como-agregar-metacampos-de-publicacion-a-la-barra-lateral-del-documento-de-gutenberg","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/como-agregar-metacampos-de-publicacion-a-la-barra-lateral-del-documento-de-gutenberg\/","title":{"rendered":"C\u00f3mo agregar metacampos de publicaci\u00f3n a la barra lateral del documento de Gutenberg"},"content":{"rendered":"\n<p>En esta publicaci\u00f3n, veremos c\u00f3mo agregar metaconfiguraciones de publicaciones personalizadas a la barra lateral de Gutenberg, en la pesta\u00f1a &quot;Documento&quot;, en lugar de depender de agregar metacuadros de la manera tradicional (y, sinceramente, mucho m\u00e1s manual).<\/p>\n<p>Si ha trabajado con WordPress un tiempo antes de que Gutenberg existiera, probablemente est\u00e9 familiarizado con la adici\u00f3n de metadatos de publicaciones personalizadas con <code>[add_meta_box](https:\/\/developer.wordpress.org\/reference\/functions\/add_meta_box\/)()<\/code>. Esta funci\u00f3n le permite agregar un cuadro meta con su contenido personalizado en la parte inferior o al costado al editar una publicaci\u00f3n. \u00a1Este m\u00e9todo todav\u00eda funciona, tambi\u00e9n en el editor de 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=\"C\u00f3mo agregar metacampos de publicaci\u00f3n a la barra lateral del documento de Gutenberg\" ><\/a><\/p>\n<p>Sin embargo, se ve un poco fuera de lugar en comparaci\u00f3n con el resto del contenido de la barra lateral de Gutenberg. Y sin mencionar que necesitar\u00eda escribir manualmente el c\u00f3digo de entrada (casilla de verificaci\u00f3n, entradas de texto, etc.) con PHP y tambi\u00e9n escribir c\u00f3digo adicional para guardarlos cuando se actualice la publicaci\u00f3n. Y si desea que la metaconfiguraci\u00f3n de su publicaci\u00f3n sea din\u00e1mica (digamos que desea ocultar un campo a menos que se haya activado alg\u00fan otro campo), entonces tendr\u00eda que poner en cola manualmente un script y s\u00ed, lo adivin\u00f3, manejar manualmente la l\u00f3gica din\u00e1mica. de ocultar y mostrar. Todo esto ahora est\u00e1 desactualizado y es m\u00e1s f\u00e1cil con el nuevo editor de Gutenberg basado en Javascript. F\u00e1cilmente podemos hacer algo como esto:<\/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=\"C\u00f3mo agregar metacampos de publicaci\u00f3n a la barra lateral del documento de Gutenberg\" ><\/a><\/p>\n<h2>El proceso<\/h2>\n<p>El proceso es el siguiente:<\/p>\n<ul>\n<li>Registramos cada meta clave de publicaci\u00f3n personalizada que queremos agregar en PHP usando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>y la configuramos como disponible en la API REST de WP. Este es un paso necesario para que la publicaci\u00f3n meta est\u00e9 disponible en el editor de Gutenberg.<\/li>\n<li>Creamos un archivo Javascript y lo ponemos en cola espec\u00edficamente para el editor (solo).<\/li>\n<li>Dentro del archivo Javascript registramos un complemento <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>dici\u00e9ndole que represente nuestro componente.<\/li>\n<li>Dentro de ese componente podemos generar lo que necesitemos. Podemos usar los componentes integrados de WordPress para representar f\u00e1cilmente diferentes tipos de configuraciones. Y al usar el paquete de datos de WordPress, podemos obtener y actualizar los valores meta de la publicaci\u00f3n de inmediato a medida que se modifican.<\/li>\n<\/ul>\n<p>Entremos directamente, comenzando con la parte de PHP; registrando el post meta.<\/p>\n<h2>Registro de la publicaci\u00f3n meta<\/h2>\n<p>Para cada meta de publicaci\u00f3n que desee agregar a la barra lateral de Gutenberg, deber\u00e1 registrarse usando <code>[register_post_meta](https:\/\/developer.wordpress.org\/reference\/functions\/register_post_meta\/)()<\/code>. Esto es necesario para que est\u00e9n disponibles a trav\u00e9s de la API REST de WP (que usa Gutenberg) y, por lo tanto, disponibles en nuestro Javascript.<\/p>\n<p>En el <code>functions.php<\/code>archivo de su tema o en alg\u00fan otro archivo PHP activo, agregue una funci\u00f3n enganchada al <code>init<\/code>gancho &#8216; &#8216;. Dentro de la funci\u00f3n, repite un <code>register_post_meta()<\/code>para cada meta de publicaci\u00f3n personalizada que desea agregar. La funci\u00f3n toma tres argumentos; El primer par\u00e1metro es el tipo de publicaci\u00f3n para el que desea registrar el meta (establecido como cadena vac\u00eda para todos los tipos de publicaci\u00f3n). El segundo par\u00e1metro es el nombre de la meta clave para su meta. Y el tercero es una serie de configuraciones. Es aqu\u00ed donde definimos que este meta debe ser accesible en la API REST de WP configurando &#8216; <code>show_in_rest<\/code>&#8216; en verdadero.<\/p>\n<p>Por ejemplo, digamos que quiero agregar un interruptor de encendido\/apagado y una entrada de texto a la barra lateral del editor. Eso significa que <code>register_post_meta()<\/code>solicito un tipo de valor booleano y de cadena, respectivamente. Tambi\u00e9n quiero limitar estos metadatos de publicaci\u00f3n al tipo de publicaci\u00f3n &#8216;publicaci\u00f3n&#8217; solamente. Eso se ver\u00eda 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>Ahora tengo una meta clave de publicaci\u00f3n lista <code>_my_custom_bool<\/code>y <code>_my_custom_text<\/code>disponible en Gutenberg. Te recomiendo que les cambies el nombre a algo que tenga sentido para ti.<\/p>\n<h2>Registrando nuestro plugin Javascript<\/h2>\n<p>Para nuestro pr\u00f3ximo paso, agregaremos un archivo Javascript y nos aseguraremos de ponerlo en cola usando PHP.<\/p>\n<p>Tenga en cuenta que escribo el c\u00f3digo Javascript en sintaxis ES6. Esto significa que configur\u00e9 una configuraci\u00f3n de paquete web\/Babel para compilar mi archivo en un archivo Javascript legible separado para el navegador.<\/p>\n<p>Tengo una gu\u00eda sobre c\u00f3mo configurar esto si no est\u00e1 seguro de c\u00f3mo funciona:<\/p>\n<p>Necesitamos asegurarnos de que WordPress cargue nuestro script en el editor. Hacemos esto conectando una funci\u00f3n <code>enqueue_block_editor_assets<\/code>y llamando a <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>Supongo que est\u00e1 familiarizado con la forma de poner en cola los scripts y puede reemplazar los valores con los suyos. Como segundo par\u00e1metro, proporciono la ruta al archivo de compilaci\u00f3n (no el archivo fuente). Para garantizar que nuestro script no se cargue demasiado pronto, configur\u00e9 &#8216; <code>wp-edit-post<\/code>&#8216; como una dependencia. Ese es el paquete que necesitamos para manejar la publicaci\u00f3n meta.<\/p>\n<p>Ahora pasemos a la parte de Javascript.<\/p>\n<p>Primero necesitamos llamar <code>[registerPlugin](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/packages-plugins\/#registerPlugin)()<\/code>y pasar nuestro componente para renderizar el panel en la barra lateral del Documento Gutenberg. Esta funci\u00f3n est\u00e1 disponible en el <code>wp.plugins<\/code>paquete, as\u00ed que la desestructurar\u00e9 en la parte superior. Me gusta mantener mis archivos ordenados, as\u00ed que creo otro archivo; &quot;awp-custom-postmeta-fields.js&quot; para contener el componente representado 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>Escribiendo nuestro componente<\/h2>\n<p>Empecemos a crear un componente b\u00e1sico que no haga nada m\u00e1s que sentarse all\u00ed en el lugar correcto, as\u00ed que lo eliminamos primero. Para renderizar un componente en la barra lateral Documento de Gutenberg, usamos el <code>[PluginDocumentSettingPanel](https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/slotfills\/plugin-document-setting-panel\/)<\/code>componente. Podemos establecer atributos como a <code>title<\/code>, <code>icon<\/code>y <code>className<\/code>. Y lo que haya dentro se representar\u00e1 en la barra lateral del Documento. Por ahora, solo estoy enviando un mensaje de texto &quot;Hola&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 el c\u00f3digo anterior (compilado), obtenemos esto:<\/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=\"C\u00f3mo agregar metacampos de publicaci\u00f3n a la barra lateral del documento de Gutenberg\" ><\/a><\/p>\n<p>Impresionante. Sin embargo, queremos agregar algunas entradas. Pero para conectar esas entradas con nuestra publicaci\u00f3n meta personalizada, necesitamos componer nuestro componente con los componentes de orden superior <code>withSelect<\/code>(para obtener los valores meta de la publicaci\u00f3n) y <code>withDispatch<\/code>(para actualizar los valores meta de la publicaci\u00f3n). Puede parecer un poco complejo si no ha trabajado antes con componentes de orden superior, pero una vez que lo comprende, es bastante simple.<\/p>\n<p>Necesitamos primero cambiar nuestra <code>export<\/code>declaraci\u00f3n. En lugar de simplemente devolver nuestro componente solo, debemos componerlo con <code>withSelect<\/code>y <code>withDispatch<\/code>, ambos en el <code>wp.data<\/code>paquete.<\/p>\n<p>En su interior <code>withSelect()<\/code>tenemos acceso a la potente <code>select()<\/code>funci\u00f3n. Usando <code>select()<\/code>podemos obtener los valores meta de la publicaci\u00f3n actual. Tambi\u00e9n podemos buscar el tipo de publicaci\u00f3n actual, si queremos. Como mencion\u00e9 anteriormente al registrar meta de publicaciones, podemos limitar las metas de publicaciones a un tipo de publicaci\u00f3n espec\u00edfico. Si buscamos el tipo de publicaci\u00f3n de la publicaci\u00f3n actual, podemos asegurarnos en nuestro componente de mostrar nuestro c\u00f3digo solo si estamos en el tipo de publicaci\u00f3n correcto. M\u00e1s sobre eso m\u00e1s adelante.<\/p>\n<p>En <code>withDispatch()<\/code>podemos definir funciones que podemos ejecutar en nuestro componente. Hacemos una funci\u00f3n que usaremos <code>dispatch()<\/code>para actualizar el meta de la publicaci\u00f3n.<\/p>\n<p>Cambiemos la <code>export<\/code>declaraci\u00f3n a esto:<\/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>Tambi\u00e9n necesitamos desestructurarlos de los siguientes paquetes en la parte superior del archivo:<\/p>\n<pre><code>const { compose } = wp.compose;\nconst { withSelect, withDispatch } = wp.data;<\/code><\/pre>\n<p>Con esto, nuestro <code>AWP_Custom_Plugin<\/code>componente tiene acceso a tres nuevos accesorios; <code>postMeta<\/code>que contiene todos los metavalores de la publicaci\u00f3n actual; <code>postType<\/code>que contiene el tipo de publicaci\u00f3n de la publicaci\u00f3n actual; y finalmente la funci\u00f3n <code>setPostMeta()<\/code>que hicimos en <code>withDispatch()<\/code>la cual se actualizar\u00e1 el meta de la publicaci\u00f3n.<\/p>\n<p>Entonces, en nuestra definici\u00f3n de componente, podemos desestructurar esos tres nuevos accesorios;<\/p>\n<pre><code>const AWP_Custom_Plugin = ({ postType, postMeta, setPostMeta }) =&gt; {\n...<\/code><\/pre>\n<p>Y ahora podemos agregar algunas entradas a nuestro renderizado, asegur\u00e1ndonos de que muestren el valor actual y que actualicen el meta de la publicaci\u00f3n en el evento de cambio. Registr\u00e9 un valor booleano y una cadena, por lo que, como ejemplo, agregar\u00e9 un <code>ToggleControl<\/code>para alternar y un simple <code>TextControl<\/code>para una entrada de texto.<\/p>\n<p>Si no est\u00e1 seguro acerca de los componentes integrados en WordPress, tengo un libro electr\u00f3nico completamente gratuito que cubre casi la mayor\u00eda de los componentes disponibles en Gutenberg, incluidos los accesorios que podemos configurar para cada uno.<\/p>\n<p>Aqu\u00ed hay un ejemplo de c\u00f3mo podr\u00eda verse nuestro 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>En l\u00ednea <code>#9-10<\/code>y <code>#16-17<\/code>encontramos las partes cr\u00edticas. Establecemos el valor actual de las entradas <code>postMeta.&lt;your meta key here&gt;<\/code>y en su evento onChange ejecutamos la funci\u00f3n <code>setPostMeta( { &lt;your meta key here&gt;: ... } )<\/code>al nuevo valor actualizado.<\/p>\n<p>Finalmente, una palabra sobre c\u00f3mo limitar su componente a un tipo de publicaci\u00f3n espec\u00edfico. En nuestro <code>withSelect()<\/code>estamos pasando el tipo de publicaci\u00f3n de la publicaci\u00f3n actual en el prop <code>postType<\/code>. Todo lo que tenemos que hacer en nuestro componente es comparar este valor con un tipo de publicaci\u00f3n y devolver un valor nulo si no coincide:<\/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>\u00a1Y eso es! Nuestro c\u00f3digo ahora deber\u00eda estar funcionando. El resultado final debe 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=\"C\u00f3mo agregar metacampos de publicaci\u00f3n a la barra lateral del documento de Gutenberg\" ><\/a><\/p>\n<h2>C\u00f3digo definitivo<\/h2>\n<p>Registrando post meta y poniendo en cola el archivo 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>Los dos archivos 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\">Fuente de grabaci\u00f3n:  <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 esta publicaci\u00f3n, veremos c\u00f3mo agregar metaconfiguraciones de publicaciones personalizadas a la barra lateral de WordPress Gutenberg, en la pesta\u00f1a \u00abDocumento\u00bb.<\/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":[892,892,810,716,716,831,935,935,1110,810,831,840,840,861,861],"tags":[1172],"class_list":{"0":"post-233389","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-codigo","9":"category-complementos","10":"category-desarrollador","12":"category-guia-para-principiantes","13":"category-gutenberg-2","15":"category-n-a","18":"category-tutoriales","20":"category-wordpress-2","22":"tag-affiai-es"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=233389"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233389\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/153560"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}