Как получить все таксономии и все термины для каждой таксономии с нулевым количеством записей
4 июл. 2012 г., 01:05:38
Просмотры: 16.4K
Голосов: 2
Существует ли простой способ получить все зарегистрированные таксономии и для каждой таксономии все термины, а для каждого термина - количество записей, без фактической загрузки всех данных записей?
Я предполагаю, что это определенно возможно. Также я предполагаю, что для этого потребуется довольно длинный SQL-запрос с использованием $wpdb
.

Michael Ecklund
6.8K
Все ответы на вопрос
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()

Stephen Harris
32.6K
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 .'';
}
?>

ztvmark
121
17 окт. 2017 г. 03:43:10
Похожие вопросы
2
ответов
6
ответов