Как получить Все Таксономии И Все Термины Для Каждой Таксономии С Нулевым Количеством Записей


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

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

Author: Michael Ecklund, 2012-07-03

2 answers

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

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

 //Array of taxonomies to get terms for
 $taxonomies = array('category','post_tags','my-tax');
 //Set arguments - don't 'hide' empty terms.
 $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 contains terms which are empty.

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

 7
Author: Stephen Harris, 2012-07-03 22:48:28
<?php
// your taxonomy name
$tax = 'cat';

// get the terms of taxonomy
$terms = get_terms( $tax, $args = array(
  'hide_empty' => false, // do not hide empty terms
));

// loop through all terms
foreach( $terms as $term ) {

    // Get the term link
    $term_link = get_term_link( $term );

    if( $term->count > 0 )
        // display link to term archive
        echo '<a href="' . esc_url( $term_link ) . '">' . $term->name .'</a>';

    elseif( $term->count !== 0 )
        // display name
        echo '' . $term->name .'';
}
?>
 1
Author: ztvmark, 2017-10-17 00:43:10