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
}
}
?>
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.

SLH
1.45K
8 nov. 2014 11:56:09
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!

Schakelen
41
8 nov. 2014 12:14:45
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 .'';
}
}

Everaldo Matias
1
1 iun. 2017 20:37:11
Întrebări similare
3
răspunsuri
4
răspunsuri
1
răspunsuri