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>';
    }
}
?>
0
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.

8 nov 2014 11:56:09
Comentarios

Increíble, funcionó a la perfección :)

Jodyshop Jodyshop
3 oct 2021 18:05:14
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!

8 nov 2014 12:14:45
Comentarios

¡Esto funciona genial! ¿Hay alguna manera de obtener la taxonomía actual en la que me encuentro y resaltarla? Gracias

gil hamer gil hamer
19 may 2016 10:23:41
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 .'';
        }
    }
1 jun 2017 20:37:11