Отображение количества опубликованных записей для каждого термина пользовательской таксономии
У меня есть пользовательская таксономия "countries". Как мне получить каждый термин (страну) с количеством опубликованных записей в скобках, как показано ниже:
- Уругвай (3)
- Чили (5)
- Таиланд (2)
- и т.д.
Следующий код показывает общее количество всех терминов в таксономии "countries":
$countries_count = wp_count_terms( 'countries' );
echo $countries_count; // Вывести общее количество терминов
Но я понимаю, что это только начальная точка моей задачи. Есть какие-нибудь предложения?

Вы можете использовать get_terms
для получения списка всех элементов таксономии. Получив все отдельные элементы, вы можете использовать $term->name
для отображения имени элемента и $term->count
для получения количества записей внутри этого элемента.
Вот немного изменённая версия кода из кодекса. Вы можете дополнительно модифицировать вывод по своему усмотрению.
<?php
$terms = get_terms('countries');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo '<ul>';
foreach ( $terms as $term ) {
echo '<li>' . $term->name . ' (' . $term->count . ')' . '</li>';
}
echo '</ul>';
}
?>
РЕДАКТИРОВАНО
Спасибо @Traveler, вот ещё одна версия моего кода, если вам нужны кликабельные ссылки.
<?php
$terms = get_terms('countries');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo '<ul>';
foreach ( $terms as $term ) {
$term = sanitize_term( $term, 'countries' );
$term_link = get_term_link( $term, 'countries' );
echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . ' (' . $term->count . ')' . '</a></li>';
}
echo '</ul>';
}
?>

Спасибо за код, он отлично работает! Для тех, кто хочет, чтобы приведённый выше код также был кликабельным и вёл на ссылку каждого термина, используйте следующий код:
<?php
$terms = get_terms('countries');
if ( !empty( $terms ) && !is_wp_error( $terms ) ){ echo '<ul>'; foreach ( $terms as $term ) { $term = sanitize_term( $term, 'countries' ); $term_link = get_term_link( $term, 'countries' ); echo '<li><a href="' . esc_url( $term_link ) . '">' . $term->name . ' (' . $term->count . ')' . '</a></li>'; } echo '</ul>'; } ?>

Вы можете попробовать это с WP Query. Я еще не тестировал этот код, поэтому дайте мне знать, если он сработает.
$query = new WP_Query( array( 'taxonomy' => 'term', 'posts_per_page' => -1 ) ); // Создаем новый запрос WP_Query
$count = $query->post_count; // Получаем количество постов в запросе

Я не могу протестировать это прямо сейчас, но попробуй получить все термины для "countries", а затем пройтись по ним в цикле и получить wp_count_terms для каждого из них.
$terms = get_terms("countries");
if ( !empty( $terms ) && !is_wp_error( $terms ) ){
echo "<ul>";
foreach ( $terms as $term ) {
$args = array( 'slug' => $term->slug, );
echo "<li>" . $term->name . "(" . wp_count_terms('countries', $args) . ")</li>";
}
echo "</ul>"; }

Это было решением, спасибо. Было бы полезно указать источник этого кода (Wordpress Codex), как в ответе ниже.

@Traveler: Если это решение, пожалуйста, отметьте его как таковое.
Ссылки на источники:
http://codex.wordpress.org/Function_Reference/get_terms
и
http://codex.wordpress.org/Function_Reference/wp_count_terms
