Список всех терминов таксономии / Показывать ссылки, если есть прикрепленные записи, иначе только имена
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>'; // Выводим термины со ссылками
}
}
?>

Schakelen
41
Все ответы на вопрос
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>';
}
Надеюсь, это вам помогло.

SLH
1.45K
8 нояб. 2014 г. 11:56:09
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 .'';
}
?>
Отлично работает!

Schakelen
41
8 нояб. 2014 г. 12:14:45
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 .'';
}
}

Everaldo Matias
1
1 июн. 2017 г. 20:37:11
Похожие вопросы