Mostrar todos los slugs de wp_get_post_terms

14 mar 2014, 18:54:01
Vistas: 24.4K
Votos: 1

Estoy usando el siguiente código para mostrar los slugs de mi taxonomía personalizada. Sin embargo, solo muestra la primera categoría y no todas las categorías relacionadas. Sé que esto es bastante simple y tiene que ver con [0] pero no puedo determinar cómo cambiarlo.

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
$getslug = $getslugid [0]->slug;
echo $getslug;
0
Todas las respuestas a la pregunta 3
4

La función principal de WordPress wp_list_pluck() debería facilitar bastante esto.

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
$slugs = implode(', ',wp_list_pluck($getslugid,'slug'));
echo $slugs;
14 mar 2014 19:49:01
Comentarios

+1, ni siquiera sabía de esta función. Como también usa foreach (hablando de rendimiento), todavía prefiero mi solución, ya que tengo control preciso y podría usar múltiples campos del objeto.

fischi fischi
14 mar 2014 19:57:39

Sí, en cuanto a rendimiento... probablemente no haya mucha diferencia. Es solo un atajo conveniente si solo necesitas un valor.

s_ha_dum s_ha_dum
14 mar 2014 20:21:23

@s_ha_dum No conocía wp_list_pluck(), gracias.

Nypam Nypam
27 ago 2017 11:31:27

@s_ha_dum Lo mismo. No había escuchado sobre esta función wp_list_pluck. Salvavidas :)

melvin melvin
5 jul 2019 15:18:32
0

Esto es más una pregunta de PHP, pero la solución es simple: necesitas usar un bucle foreach en $getslug, porque solo estás mostrando el slug de la primera taxonomía.

La función wp_get_post_terms() no devuelve un solo objeto, sino un array de objetos. Tienes razón con el [0], esto indica que estás verificando la primera entrada de dicho array.

Tu función debería verse algo así:

$getslugid = wp_get_post_terms( $post->ID, 'opd_taggallery' ); 
foreach( $getslugid as $thisslug ) {

    echo $thisslug->slug . ' '; // Se agregó un espacio entre los slugs con . ' '

}
14 mar 2014 19:15:37
0

En versiones más recientes de WordPress es posible consultar directamente solo los slugs de taxonomía. Creo que esto llegó con la introducción de la clase WP_Term_Query en la versión 4.6.0 de WordPress.

$slugs = wp_get_post_terms( $post->ID, 'opd_taggallery', array( 
    'fields' => 'id=>slug',
) );
echo implode( " ", $slugs );
26 ene 2017 00:24:44