Listează toți termenii taxonomiei / Afișează linkuri doar dacă există postări atașate, altfel doar numele

8 nov. 2014, 11:34:41
Vizualizări: 18.6K
Voturi: 3

Caut o metodă pentru a lista toți termenii dintr-o taxonomie personalizată. Doar termenii care au postări atașate ar trebui să aibă linkuri către pagina de arhivă. Dacă nu există postări atașate, ar trebui să afișeze doar numele.

Idei? Mulțumesc!

<?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 . ", "; // Afișează doar numele termenului
    }
}
if ( $terms > 0 ) {
    foreach ( $terms as $term ) {
        echo '<li><a href="' . $term->slug . '">' . $term->name .'</a></li>'; // Afișează termenul ca link
    }
}
?>
0
Toate răspunsurile la întrebare 3
1

Nu am înțeles foarte bine întrebarea ta, dar încearcă asta. Explicația este în comentarii.

// numele taxonomiei tale
$tax = 'post_tag';

// obține termenii taxonomiei
$terms = get_terms( $tax, [
  'hide_empty' => false, // nu ascunde termenii goi
]);

// parcurge toți termenii
foreach( $terms as $term ) {

  // dacă nu există intrări atașate termenului
  if( 0 == $term->count )
    // afișează doar numele termenului
    echo '<h4>' . $term->name . '</h4>';

  // dacă termenul are mai mult de 0 intrări
  elseif( $term->count > 0 )
    // afișează link către arhiva termenului
    echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';

}

Sper că te-a ajutat.

8 nov. 2014 11:56:09
Comentarii

Super, a funcționat perfect :)

Jodyshop Jodyshop
3 oct. 2021 18:05:14
1

Mulțumesc pentru ajutor! Am făcut câteva mici ajustări și acum funcționează:

<?php
// numele taxonomiei tale
$tax = 'cat';

// obține termenii taxonomiei
$terms = get_terms( $tax, $args = array(
  'hide_empty' => false, // nu ascunde termenii goi
));

// parcurge toți termenii
foreach( $terms as $term ) {

    // Obține link-ul termenului
    $term_link = get_term_link( $term );

    if( $term->count > 0 )
        // afișează link către arhiva termenului
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

    elseif( $term->count !== 0 )
        // afișează numele
        echo '' . $term->name .'';
}
?>

Este minunat!

8 nov. 2014 12:14:45
Comentarii

funcționează excelent! Este cumva posibil să obțin taxonomia curentă în care mă aflu și să o evidențiez? Mulțumesc

gil hamer gil hamer
19 mai 2016 10:23:41
0

Doar o îmbunătățire la comentariul lui Schakelen pentru a testa dacă ceva a fost returnat

// numele taxonomiei tale
$tax = 'cat';

// obține termenii taxonomiei
$terms = get_terms( $tax, $args = array( 
'hide_empty' => false, // nu ascunde termenii goi
));

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

        // parcurge toți termenii
        foreach( $terms as $term ) {

            // Obține link-ul termenului
            $term_link = get_term_link( $term );

            if( $term->count > 0 )
                // afișează link către arhiva termenului
                echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

            elseif( $term->count !== 0 )
                // afișează numele
                echo '' . $term->name .'';
        }
    }
1 iun. 2017 20:37:11