Список всех терминов таксономии / Показывать ссылки, если есть прикрепленные записи, иначе только имена

8 нояб. 2014 г., 11:34:41
Просмотры: 18.6K
Голосов: 3

Я ищу способ вывести список всех терминов из пользовательской таксономии. Только термины, к которым прикреплены записи, должны иметь ссылки на архивную страницу. Если записей нет, должно отображаться только имя термина.

Есть идеи? Спасибо!

<?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
Все ответы на вопрос 3
1

Я не совсем понял ваш вопрос, но попробуйте это. Пояснения в комментариях.

// название вашей таксономии
$tax = 'post_tag';

// получаем термины таксономии
$terms = get_terms( $tax, [
  'hide_empty' => false, // не скрывать пустые термины
]);

// перебираем все термины
foreach( $terms as $term ) {

  // если к термину не прикреплены записи
  if( 0 == $term->count )
    // выводим только название термина
    echo '<h4>' . $term->name . '</h4>';

  // если у термина больше 0 записей
  elseif( $term->count > 0 )
    // выводим ссылку на архив термина
    echo '<h4><a href="'. get_term_link( $term ) .'">'. $term->name .'</a></h4>';

}

Надеюсь, это вам помогло.

8 нояб. 2014 г. 11:56:09
Комментарии

Отлично, сработало как по волшебству :)

Jodyshop Jodyshop
3 окт. 2021 г. 18:05:14
1

Спасибо за помощь! Я внес небольшие корректировки, и теперь всё работает:

<?php
// название вашей таксономии
$tax = 'cat';

// получаем термины таксономии
$terms = get_terms( $tax, $args = array(
  'hide_empty' => false, // не скрывать пустые термины
));

// перебираем все термины
foreach( $terms as $term ) {

    // Получаем ссылку на термин
    $term_link = get_term_link( $term );

    if( $term->count > 0 )
        // выводим ссылку на архив термина
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

    elseif( $term->count !== 0 )
        // выводим название
        echo '' . $term->name .'';
}
?>

Отлично работает!

8 нояб. 2014 г. 12:14:45
Комментарии

отлично работает! Можно ли как-то получить текущую таксономию, в которой я нахожусь, и выделить ее? Спасибо

gil hamer gil hamer
19 мая 2016 г. 10:23:41
0

Только улучшение к комментарию Schakelen, чтобы проверить, возвращается ли что-то

// название вашей таксономии
$tax = 'cat';

// получаем термины таксономии
$terms = get_terms( $tax, $args = array( 
'hide_empty' => false, // не скрывать пустые термины
));

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

        // проходим по всем терминам
        foreach( $terms as $term ) {

            // Получаем ссылку на термин
            $term_link = get_term_link( $term );

            if( $term->count > 0 )
                // выводим ссылку на архив термина
                echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

            elseif( $term->count !== 0 )
                // выводим название
                echo '' . $term->name .'';
        }
    }
1 июн. 2017 г. 20:37:11