WordPress – Obtener ID de etiqueta por slug

2 minutos de lectura

avatar de usuario
Oshrib

Estoy tratando de obtener id\name de la etiqueta por su slug.

Ese es mi código:

$tag = get_term_by('slug', 'hedoms', 'post_tag');
$tag_id =  $tag->term_id;

<h1><?php echo $tag->name;?></h1>

Lo saqué de aquí:
https://codex.wordpress.org/Function_Reference/get_term_by

Tengo etiqueta con la babosa hedomes pero el <h1> está vacío, no devuelve el valor. Probé esta función (get_term_by) con categoría, y el mismo resultado.

ingrese la descripción de la imagen aquí

el segundo campo es la babosa.

Pero si lo hago con id y no con slug, funciona bien:

$tag_id = get_term_by('id', 97, 'post_tag');
echo $tag_id->name;

Parece que get_term_by reconoce solo ‘id’ como campo.

¿Qué extraño aquí? debe estar en bucle o algo?

El archivo que intento hacer es archive-product.php de Woocommerce.

  • ¿Qué tal cambiar el “slug” por “name”?

    – rheeantz

    22 de junio de 2017 a las 20:54

  • @RyanAW Necesito el slug porque trabajo con el filtro ajax con etiquetas, así que después de elegir algo de la lista desplegable, cambia la URL de la página con el slug en la cadena de consulta… y es por eso que estoy usando slug. de todos modos, también con “nombre” no me funciona. solo con DNI.

    – Oshrib

    22/06/2017 a las 21:00


  • Lo siento por eso, ¿es posible usar rest api? me gusta http://yourwebsite/wp/wp-json/wp/v2/tags?slug=hedoms

    – rheeantz

    22 de junio de 2017 a las 21:09

$tag = get_term_by('slug', ' hedoms','post_tag');

$tag_id =  $tag->term_id; 

  • gracias pero… Es el mismo código mío. no funciona.

    – Oshrib

    22 de junio de 2017 a las 20:37

  • @Oshrib, ¿ha intentado lo mismo en el mismo otro archivo?

    – mayank

    22 de junio de 2017 a las 20:39

  • Sí. también en single.php

    – Oshrib

    22 de junio de 2017 a las 20:41

  • He probado con wp_query. $the_query = new WP_Query( array( 'post_type' => 'Adverts', 'tax_query' => array( array ( 'taxonomy' => 'post_tag', 'field' => 'slug', 'terms' => 'hedoms', ) ), ) );

    – mayank

    22 de junio de 2017 a las 21:08

  • Que en bucle obtendrá los datos que desea. Es decir while ( $the_query->have_posts() ) : $the_query->the_post(); /*var_dump() data*/ endwhile; wp_reset_postdata();

    – mayank

    22 de junio de 2017 a las 21:10


Bien, he encontrado la solución.

Configuré en get_term_by la taxonomía ‘post_tag’ en lugar de ‘product_tag’ como etiquetas de woocommerce. La próxima vez miraré detenidamente la URL de wp-admin cuando mire la página de taxonomía:

...wp-admin/edit-tags.php?taxonomy=product_tag&post_type=product

Así que el código debería ser así:

           $tag = get_term_by('slug', $slug, 'product_tag');
           $tag_name = $tag->name;

           <h1><?php echo $tag_name; ?></h1> 

Resuelto.

¿Ha sido útil esta solución?