Как получить все таксономии и все термины для каждой таксономии с нулевым количеством записей

4 июл. 2012 г., 01:05:38
Просмотры: 16.4K
Голосов: 2

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

Я предполагаю, что это определенно возможно. Также я предполагаю, что для этого потребуется довольно длинный SQL-запрос с использованием $wpdb.

0
Все ответы на вопрос 2
0

Вы можете сделать это с помощью функции get_terms - она позволяет получить все (или некоторые) термины из одной или нескольких таксономий.

По умолчанию она исключает "пустые" термины, поэтому вам нужно правильно установить аргументы.

 //Массив таксономий, для которых нужно получить термины
 $taxonomies = array('category','post_tags','my-tax');
 //Устанавливаем аргументы - не скрываем пустые термины
 $args = array(
     'hide_empty' => 0
 );

 $terms = get_terms( $taxonomies, $args);
 $empty_terms = array();

 foreach( $terms as $term ){
     if( 0 == $term->count )
          $empty_terms[] = $term;
 }

 //$empty_terms содержит пустые термины

Если вы хотите программно получить массив зарегистрированных таксономий, вы можете использовать get_taxonomies()

4 июл. 2012 г. 01:48:28
0
<?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 .'';
}
?>
17 окт. 2017 г. 03:43:10