{"id":233837,"date":"2023-02-24T09:28:00","date_gmt":"2023-02-24T06:28:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233837"},"modified":"2022-11-11T12:43:30","modified_gmt":"2022-11-11T09:43:30","slug":"aprenda-a-escribir-caminantes-de-menu-para-menus-de-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/aprenda-a-escribir-caminantes-de-menu-para-menus-de-wordpress\/","title":{"rendered":"Aprenda a escribir caminantes de men\u00fa para men\u00fas de WordPress"},"content":{"rendered":"\n<p>WordPress permite el uso de las llamadas clases Walker para recorrer y mostrar elementos en una estructura jer\u00e1rquica. En esta publicaci\u00f3n, aprenderemos c\u00f3mo crear, implementar y personalizar nuestra propia clase de caminante para personalizar la salida de nuestro men\u00fa.<\/p>\n<p>El uso m\u00e1s conocido de la personalizaci\u00f3n con las clases de Walker en WordPress es para los men\u00fas, pero en realidad WordPress usa las clases de Walker para un mont\u00f3n de casos, por ejemplo, generar jerarqu\u00edas de taxonom\u00eda, jerarqu\u00edas de comentarios <code>[wp_list_pages](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_pages\/)()<\/code>y archivos <code>[wp_list_categories](https:\/\/developer.wordpress.org\/reference\/functions\/wp_list_categories\/)()<\/code>. Todos extienden una <code>Walker<\/code>clase general. Ampliaremos el <code>Walker_Nav_Menu<\/code>que se usa para los men\u00fas en WordPress.<\/p>\n<p>Debido a que extendemos otra clase, solo necesitamos agregar las funciones que deseamos anular. Si una funci\u00f3n no existe en nuestra clase, WordPress ejecutar\u00e1 la funci\u00f3n de la clase principal (la clase que extendemos) en su lugar.<\/p>\n<h2>Preparaci\u00f3n<\/h2>\n<p>Puede agregar su clase de caminante en sus archivos de complemento, temas <code>function.php<\/code>o cualquier archivo PHP incluido por <code>functions.php<\/code>(para un c\u00f3digo m\u00e1s limpio). Comienza definiendo tu clase con un nombre de tu elecci\u00f3n (\u00a1aseg\u00farate de que el nombre de la clase sea \u00fanico, y esto incluye posibles nombres de clase en el n\u00facleo de WordPress!) extendiendo <code>Walker_Nav_Menu<\/code>:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n}<\/code><\/pre>\n<p>Para decirle a WordPress que use nuestro andador, lo definimos en nuestras <code>[wp_nav_menu](https:\/\/developer.wordpress.org\/reference\/functions\/wp_nav_menu\/)()<\/code>llamadas. Esta funci\u00f3n es responsable de generar un men\u00fa y probablemente tenga al menos uno en su tema para el men\u00fa principal.<\/p>\n<p>En la matriz de argumentos <code>wp_nav_menu()<\/code>, agregue un nuevo elemento con la clave &#8216;walker&#8217; y cree una nueva instancia de su clase walker de la siguiente manera:<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker()\n]);<\/code><\/pre>\n<p>Si actualiza su sitio, no deber\u00eda ver ning\u00fan cambio. Esto se debe a que nuestra clase no anula ninguna de las funciones de los padres y, por lo tanto, WordPress simplemente ejecuta las funciones normales del caminante del men\u00fa cuando genera el men\u00fa, tal como antes le dijimos que usara nuestro caminante.<\/p>\n<h2>Descripci\u00f3n general de las funciones que podemos anular en<code>Walker_Nav_Menu<\/code><\/h2>\n<p>Las siguientes son funciones que puede agregar a su clase de caminante personalizada para anular las funciones de la clase de crianza <code>Walker_Nav_Menu<\/code>:<\/p>\n<p>Las primeras cuatro son funciones que son simplemente responsables de la salida, y todas requieren que agregue una cadena: la primera variable de par\u00e1metro. Es importante saber que no haces <code>echo<\/code>nada aqu\u00ed, se supone que todo debe construirse como una cadena.<\/p>\n<h3>inicio_lvl<\/h3>\n<p>La funci\u00f3n <code>start_lvl<\/code>es responsable de generar el HTML para el inicio de un nuevo nivel. En resumen, deber\u00eda dar salida al archivo de inicio <code>&lt;ul&gt;<\/code>.<\/p>\n<pre><code>function start_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>El primer par\u00e1metro, <code>$output<\/code>pasado por referencia, es la cadena a la que agregar\u00e1 su salida. <code>$depth<\/code>es un n\u00famero entero que indica en qu\u00e9 nivel se encuentra; 0 para el nivel superior, 1 para el hijo directo del nivel superior, y as\u00ed sucesivamente. <code>$args<\/code>es un objeto de todos los argumentos proporcionados en <code>wp_nav_menu()<\/code>.<\/p>\n<h3>fin_lvl<\/h3>\n<p>La <code>end_lvl<\/code>funci\u00f3n es responsable de generar el HTML para el final de un nivel. Esto suele ser s\u00f3lo el cierre <code>&lt;\/ul&gt;<\/code>.<\/p>\n<pre><code>function end_lvl(&amp;$output, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Los par\u00e1metros son exactamente los mismos que los <code>start_lvl<\/code>anteriores.<\/p>\n<h3>start_el<\/h3>\n<p>Esta funci\u00f3n es responsable de generar el HTML de cada elemento. En resumen, deber\u00eda generar el inicio <code>&lt;li&gt;<\/code>y la <code>&lt;a&gt;<\/code>etiqueta con el t\u00edtulo del enlace dentro.<\/p>\n<pre><code>function start_el(&amp;$output, $item, $depth=0, $args=null, $id=0) { }<\/code><\/pre>\n<p>El primer argumento, <code>$output<\/code>, es como de costumbre la cadena a la que agregar\u00e1 la salida. El segundo argumento, <code>$item<\/code>, es el objeto del elemento del men\u00fa, y aqu\u00ed es donde obtendr\u00e1 la mayor\u00eda de los datos para generar el elemento del men\u00fa. Si el enlace del men\u00fa es un elemento del men\u00fa de publicaci\u00f3n, obtendr\u00e1 el objeto de publicaci\u00f3n aqu\u00ed. Independientemente del tipo de men\u00fa, tambi\u00e9n obtendr\u00e1 algunos elementos \u00fatiles adicionales; como <code>classes<\/code>, <code>url<\/code>, <code>title<\/code>y <code>description<\/code>.<\/p>\n<p>El tercer argumento, <code>$depth<\/code>, es un n\u00famero entero que le dice en qu\u00e9 nivel estamos. El nivel 0 es el nivel superior, el 1 es hijo directo del nivel superior, y as\u00ed sucesivamente. El cuarto argumento, <code>$args<\/code>, es un objeto de todos los argumentos proporcionados a <code>wp_nav_menu()<\/code>. El quinto par\u00e1metro, <code>$id<\/code>, es el ID del elemento de men\u00fa actual.<\/p>\n<h3>end_el<\/h3>\n<p>La <code>end_el<\/code>funci\u00f3n es responsable de dar salida al cierre de un elemento. Por lo general, solo generar\u00eda la <code>&lt;\/li&gt;<\/code>etiqueta.<\/p>\n<pre><code>function end_el(&amp;$output, $item, $depth=0, $args=null) { }<\/code><\/pre>\n<p>Los argumentos para <code>end_el<\/code>son los mismos que <code>start_el<\/code>los anteriores, excepto que la funci\u00f3n no tiene el quinto par\u00e1metro, <code>$id<\/code>.<\/p>\n<h3>mostrar_elemento<\/h3>\n<p>La funci\u00f3n <code>display_element<\/code>es una funci\u00f3n heredada de la <code>Walker<\/code>clase general y es la funci\u00f3n responsable de atravesar. Esta es la funci\u00f3n que llama a todas las funciones anteriores a su vez.<\/p>\n<p>Incluyo esto aqu\u00ed porque en algunos casos, por ejemplo, si desea evitar atravesar una rama completa, usar\u00eda esta funci\u00f3n para eso.<\/p>\n<pre><code>function display_element($element, &amp;$children_elements, $max_depth, $depth, $args, &amp;$output) { }<\/code><\/pre>\n<p>El primer argumento, <code>$element<\/code>, es el objeto del elemento de men\u00fa: esto es lo que se transmite como <code>$item<\/code>en las funciones anteriores. El segundo argumento, <code>$children_elements<\/code>pasado por referencia, contiene todos los elementos secundarios que atravesar\u00e1 esta funci\u00f3n. <code>$max_depth<\/code>, el tercer argumento, es un n\u00famero entero que indica qu\u00e9 tan profundo debemos atravesar, y el cuarto argumento <code>$depth<\/code>, es la profundidad a la que nos encontramos actualmente. El quinto argumento, <code>$args<\/code>, son los argumentos pasados \u200b\u200ba la funci\u00f3n que llam\u00f3 al caminante (para los men\u00fas ser\u00edan los argumentos proporcionados a <code>wp_nav_menu()<\/code>), y el argumento final, <code>$output<\/code>pasado por referencia, es la salida que se pasa como primer argumento en todos de las funciones anteriores.<\/p>\n<h2>Modificar la salida de cada elemento<\/h2>\n<p>En la descripci\u00f3n general anterior, deber\u00eda ver que la funci\u00f3n <code>start_el()<\/code>es la responsable de generar el HTML para un solo elemento de men\u00fa. Comencemos reemplazando esta funci\u00f3n en nuestra clase walker con un ejemplo simple.<\/p>\n<h3>Ejemplo: evitar agregar enlaces para elementos &#8216;#&#8217;<\/h3>\n<p>Asegur\u00e9monos de que cualquier <code>#<\/code>enlace &#8216; &#8216; obtenga un <code>&lt;span&gt;<\/code>elemento en lugar de una etiqueta de enlace, para evitar actualizar la p\u00e1gina.<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Comenzaremos el elemento agregando una <code>&lt;li&gt;<\/code>etiqueta a <code>$output<\/code>. Queremos asegurarnos de que las clases predeterminadas de WordPress (por ejemplo, &#8216;menu-item&#8217;, &#8216;menu-item-has-child&#8217;, etc.), as\u00ed como las clases ingresadas manualmente en el editor de men\u00fa, se agreguen a nuestro elemento de lista. Pegamos las clases proporcionadas como una matriz <code>$item-&gt;classes<\/code>usando la funci\u00f3n PHP <code>[implode](https:\/\/www.php.net\/manual\/en\/function.implode.php)()<\/code>separando cada elemento con un espacio.<\/p>\n<p>En las l\u00edneas #5-9 y #13-17 manejamos la salida condicional del elemento envolvente. Enviamos una <code>&lt;a&gt;<\/code>etiqueta, a menos que la URL del elemento sea &#8216; <code>#<\/code>&#8216;, en cuyo caso proporcionamos una <code>&lt;span&gt;<\/code>etiqueta en su lugar. En la l\u00ednea #11 simplemente mostramos el texto del enlace, que reside en <code>$item-&gt;title<\/code>.<\/p>\n<p>\u00a1Esto es todo lo que necesitamos para asegurarnos de que <code>#<\/code>no se pueda hacer clic en todos los elementos del men\u00fa que tienen &#8216; &#8216; como URL!<\/p>\n<p>Si est\u00e1 haciendo esto en un tema con estilo, tenga en cuenta que podr\u00eda perder algo de estilo si el tema ha aplicado estilo a la <code>&lt;a&gt;<\/code>etiqueta directamente. Puede resolver esto cambiando el estilo y posiblemente agregando una clase al elemento span.<\/p>\n<h3>Ejemplo: visualizaci\u00f3n de descripciones de elementos de men\u00fa<\/h3>\n<p>Como ejemplo, otra cosa que puede hacer aqu\u00ed es mostrar la descripci\u00f3n del men\u00fa. Esto existe, pero no est\u00e1 activado por defecto. En el editor de men\u00fa de WordPress, debe hacer clic en &quot;Opciones de pantalla&quot; en la parte superior derecha y marcar para mostrar &quot;Descripci\u00f3n&quot;:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd7d3371.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-151802-61e4cfd7d3371.png\" alt=\"Aprenda a escribir caminantes de men\u00fa para men\u00fas de WordPress\" ><\/a><\/p>\n<p>Esto permite al usuario ingresar una descripci\u00f3n para cada elemento. Puede generar esta descripci\u00f3n en su clase de caminante. Supongamos que solo desea mostrar la descripci\u00f3n de los elementos de nivel superior, ya que esto es parte del dise\u00f1o de su tema. Simplemente puede verificar si <code>$item<\/code>tiene una descripci\u00f3n y si <code>$depth<\/code>es 0, as\u00ed:<\/p>\n<pre><code>        ...\n        $output .= $item-&gt;title;\n\u00a0\n        if ($depth == 0 &amp;&amp; !empty($item-&gt;description)) {\n            $output .= '&lt;span class=\"description\"&gt;'. $item-&gt;description. '&lt;\/span&gt;';\n        }\n        ...<\/code><\/pre>\n<h3>Ejemplo: Adici\u00f3n de s\u00edmbolos de intercalaci\u00f3n desplegables<\/h3>\n<p>Un ejemplo m\u00e1s com\u00fan y \u00fatil es agregar un &quot;signo de intercalaci\u00f3n&quot;, un \u00edcono que indica que este elemento del men\u00fa tiene un men\u00fa desplegable (tiene elementos secundarios).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-151802-61e4cfd965e21.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-151802-61e4cfd965e21.png\" alt=\"Aprenda a escribir caminantes de men\u00fa para men\u00fas de WordPress\" ><\/a><\/p>\n<p>Ejemplo de signos de intercalaci\u00f3n en acci\u00f3n: detr\u00e1s de &quot;Blog&quot; y &quot;Noticias&quot;<\/p>\n<p>Deber\u00e1 averiguar su salida HTML de intercalaci\u00f3n. En mi caso, estoy generando un <code>&lt;i&gt;<\/code>elemento con clases espec\u00edficas para una buena flecha hacia abajo disponible en la biblioteca <a href=\"https:\/\/fontawesome.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Fontawesome<\/a> que proporciona miles de \u00edconos. Tambi\u00e9n desea asegurarse de que este signo de intercalaci\u00f3n solo se muestre en elementos que tienen elementos secundarios. La mejor manera que he encontrado para averiguar si el elemento actual tiene hijos es haciendo referencia al objeto walker (s\u00ed, que es nuestro walker en s\u00ed mismo, \u00a1pero tambi\u00e9n las clases que extiende!) en <code>$args<\/code>, y verificando el boolean <code>has_children<\/code>. La salida de un signo de intercalaci\u00f3n es tan simple como:<\/p>\n<pre><code>if ($args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>La clase de caminante completa se ver\u00eda as\u00ed:<\/p>\n<pre><code>class AWP_Menu_Walker extends Walker_Nav_Menu {\n    function start_el(&amp;$output, $item, $depth=0, $args=[], $id=0) {\n        $output .= \"&lt;li class='\". implode(\" \", $item-&gt;classes). \"'&gt;\";\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;a href=\"'. $item-&gt;url. '\"&gt;';\n        } else {\n            $output .= '&lt;span&gt;';\n        }\n\u00a0\n        $output .= $item-&gt;title;\n\u00a0\n        if ($item-&gt;url &amp;&amp; $item-&gt;url != '#') {\n            $output .= '&lt;\/a&gt;';\n        } else {\n            $output .= '&lt;\/span&gt;';\n        }\n\u00a0\n        if ($args-&gt;walker-&gt;has_children) {\n            $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n        }\n    }\n}<\/code><\/pre>\n<p>Y eso es todo lo que necesita para asegurarse de que su men\u00fa tenga bonitos iconos de intercalaci\u00f3n en los elementos principales y que <code>#<\/code>no se pueda hacer clic en los enlaces &#8216; &#8216;.<\/p>\n<p>Si desea que el \u00edcono de intercalaci\u00f3n cambie, por ejemplo, a una flecha hacia arriba cuando el men\u00fa desplegable est\u00e9 activo, deber\u00e1 agregar esto con Javascript a su tema.<\/p>\n<p>Como sugieren los ejemplos anteriores, puede manipular la salida como desee, en funci\u00f3n de cualquier condicional. Puede, por ejemplo, modificar la salida en funci\u00f3n de si una determinada clase est\u00e1 presente (por ejemplo, una clase ingresada manualmente en el editor de men\u00fas) buscando la clase en <code>$item-&gt;classes<\/code>, o puede manipular (por ejemplo, poner en may\u00fasculas) el texto del elemento de salida proporcionado en <code>$item-&gt;title<\/code>.<\/p>\n<h2>Aportando argumentos a tu andador a trav\u00e9s de tu<code>wp_nav_menu<\/code><\/h2>\n<p>Me gustar\u00eda mencionar otra cosa \u00fatil. Recuerde que $args contiene todos los argumentos proporcionados a <code>wp_nav_menu()<\/code>. Esto incluye, por ejemplo <code>theme_location<\/code>, y otros, por lo que si puede modificar la salida solo para ubicaciones de temas espec\u00edficos, por ejemplo, el men\u00fa principal. \u00a1Pero en realidad puede proporcionar cualquier argumento personalizado!<\/p>\n<p>Digamos que est\u00e1 mostrando el mismo men\u00fa varias veces, por ejemplo, una para escritorio y otra para m\u00f3vil. \u00bfO desea que su caminante manipule los elementos solo cuando se generan <code>wp_nav_menu()<\/code>en su tema, y \u200b\u200bno cuando el men\u00fa se agrega a trav\u00e9s de un widget? \u00bfQuiz\u00e1s desea que su andador maneje la salida de manera diferente en estos casos?<\/p>\n<p>Puede proporcionar cualquier argumento personalizado a <code>wp_nav_menu()<\/code>. Como un ejemplo simple, <code>show_carets<\/code>agregar\u00e9 un booleano &#8216; &#8216; a los argumentos para garantizar que los s\u00edmbolos de intercalaci\u00f3n se agreguen solo en los casos en que los quiero, en lugar de que mi clase de caminante agregue s\u00edmbolos de intercalaci\u00f3n a todos los men\u00fas.<\/p>\n<pre><code>wp_nav_menu([\n    'theme_location' =&gt; 'primary',\n    'menu_class' =&gt; 'main-menu',\n    'container' =&gt; 'nav',\n    'container_class' =&gt; 'header__main-nav',\n    'walker' =&gt; new AWP_Menu_Walker(),\n    'show_carets' =&gt; true\n]);<\/code><\/pre>\n<p>Luego, simplemente puedo cambiar mi c\u00f3digo de intercalaci\u00f3n anterior (l\u00ednea n. \u00b0 19-21) para verificar si <code>show_carets<\/code>est\u00e1 presente o no y es verdadero en <code>$args<\/code>, as\u00ed:<\/p>\n<pre><code>if ($args-&gt;show_carets &amp;&amp; $args-&gt;walker-&gt;has_children) {\n    $output .= '&lt;i class=\"caret fa fa-angle-down\"&gt;&lt;\/i&gt;';\n}<\/code><\/pre>\n<p>Puede agregar cualquier argumento que desee para asegurarse de que su andador solo personalice los men\u00fas que desee. Por ejemplo, booleanos simples para diferentes casos, por ejemplo <code>is_mobile_menu<\/code>, o cualquier otra cosa que necesite.<\/p>\n<p>Y eso es todo. \u00a1Si\u00e9ntase libre de experimentar y av\u00edseme si tiene alguna pregunta o sugerencia a continuaci\u00f3n!<\/p>\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, aprenderemos c\u00f3mo crear, implementar y personalizar nuestra propia clase de caminante para personalizar la salida de nuestro men\u00fa en WordPress.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,892,914,1110,914,924,840,840,861,861],"tags":[1172],"class_list":["post-233837","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-otro","category-n-a","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233837","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=233837"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233837\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}