it-swarm.com.de

Alle Taxonomiebegriffe auflisten/Links anzeigen, wenn Beiträge angehängt sind, sonst Namen

Ich suche nach einer Möglichkeit, alle Begriffe einer benutzerdefinierten Taxonomie aufzulisten. Nur die Begriffe, an die Beiträge angehängt sind, sollten Links zur Archivseite haben. Wenn keine Beiträge angehängt sind, sollten nur die Namen angezeigt werden.

Irgendwelche Ideen? Vielen Dank!

<?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>';
    }
}
?>
2
Schakelen

Ich habe Ihre Frage nicht gut verstanden, aber probieren Sie es aus. Erklärung ist in den Kommentaren.

// your taxonomy name
$tax = 'post_tag';

// get the terms of taxonomy
$terms = get_terms( $tax, [
  'hide_empty' => false, // do not hide empty terms
]);

// loop through all terms
foreach( $terms as $term ) {

  // if no entries attached to the term
  if( 0 == $term->count )
    // display only the term name
    echo '<h4>' . $term->name . '</h4>';

  // if term has more than 0 entries
  elseif( $term->count > 0 )
    // display link to the term archive
    echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';

}

Hoffe es hat dir geholfen.

2
SLH

Danke für Ihre Hilfe! Ich habe ein paar kleine Anpassungen vorgenommen und es funktioniert jetzt:

<?php
// your taxonomy name
$tax = 'cat';

// get the terms of taxonomy
$terms = get_terms( $tax, $args = array(
  'hide_empty' => false, // do not hide empty terms
));

// loop through all terms
foreach( $terms as $term ) {

    // Get the term link
    $term_link = get_term_link( $term );

    if( $term->count > 0 )
        // display link to term archive
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

    elseif( $term->count !== 0 )
        // display name
        echo '' . $term->name .'';
}
?>

Das ist toll!

1
Schakelen

Nur eine Verbesserung von Schakelens Kommentar, um zu testen, ob etwas zurückgekehrt ist

// your taxonomy name
$tax = 'cat';

// get the terms of taxonomy
$terms = get_terms( $tax, $args = array( 
'hide_empty' => false, // do not hide empty terms
));

    if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){                

        // loop through all terms
        foreach( $terms as $term ) {

            // Get the term link
            $term_link = get_term_link( $term );

            if( $term->count > 0 )
                // display link to term archive
                echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

            elseif( $term->count !== 0 )
                // display name
                echo '' . $term->name .'';
        }
    }
0
Everaldo Matias