Listar todos los términos de taxonomía / Mostrar enlaces si hay posts asociados, solo nombres si no
8 nov 2014, 11:34:41
Vistas: 18.6K
Votos: 3
Estoy buscando una forma de listar todos los términos de una taxonomía personalizada. Solo los términos que tienen posts asociados deberían tener enlaces a la página de archivo. Si no hay posts asociados, debería mostrar solo los nombres.
¿Alguna idea? ¡Gracias!
<?php
$taxonomy = 'cat';
$queried_term = get_term_by( 'slug', get_query_var($taxonomy) );
$terms = get_terms($taxonomy);
if ( $terms !== 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}
if ( $terms > 0 ) {
foreach ( $terms as $term ) {
echo '<li><a href="' . $term->slug . '">' . $term->name .'</a></li>';
}
}
?>
Todas las respuestas a la pregunta
3
1
No entendí bien tu pregunta, pero prueba esto. La explicación está en los comentarios.
// tu taxonomía
$tax = 'post_tag';
// obtener los términos de la taxonomía
$terms = get_terms( $tax, [
'hide_empty' => false, // no ocultar términos vacíos
]);
// recorrer todos los términos
foreach( $terms as $term ) {
// si no hay entradas asociadas al término
if( 0 == $term->count )
// mostrar solo el nombre del término
echo '<h4>' . $term->name . '</h4>';
// si el término tiene más de 0 entradas
elseif( $term->count > 0 )
// mostrar enlace al archivo del término
echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';
}
Espero que te haya ayudado.

SLH
1.45K
8 nov 2014 11:56:09
1
¡Gracias por tu ayuda! He hecho algunos pequeños ajustes y ahora ya funciona:
<?php
// tu nombre de taxonomía
$tax = 'cat';
// obtener los términos de la taxonomía
$terms = get_terms( $tax, $args = array(
'hide_empty' => false, // no ocultar términos vacíos
));
// recorrer todos los términos
foreach( $terms as $term ) {
// Obtener el enlace del término
$term_link = get_term_link( $term );
if( $term->count > 0 )
// mostrar enlace al archivo del término
echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';
elseif( $term->count !== 0 )
// mostrar nombre
echo '' . $term->name .'';
}
?>
¡Esto es genial!

Schakelen
41
8 nov 2014 12:14:45
0
Solo una mejora al comentario de Schakelen para probar si algo fue devuelto
// tu taxonomía
$tax = 'cat';
// obtener los términos de la taxonomía
$terms = get_terms( $tax, $args = array(
'hide_empty' => false, // no ocultar términos vacíos
));
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
// recorrer todos los términos
foreach( $terms as $term ) {
// Obtener el enlace del término
$term_link = get_term_link( $term );
if( $term->count > 0 )
// mostrar enlace al archivo del término
echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';
elseif( $term->count !== 0 )
// mostrar nombre
echo '' . $term->name .'';
}
}

Everaldo Matias
1
1 jun 2017 20:37:11
Preguntas relacionadas
3
respuestas
4
respuestas
1
respuestas