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

У меня действительно есть пользовательская таксономия названной "странами". Как делают я получаю каждый термин (страна) с количеством ее опубликованных сообщений в скобках, как следующее:

  • Уругвай (3)
  • Чили (5)
  • Таиланд (2)
  • и т.д.

Со следующим кодом отображено количество всех условий в таксономии "стран":

$countries_count = wp_count_terms( 'countries' );
echo $countries_count; 

Но я просто знаю, что это - просто начальная точка моей проблемы. Какие-либо предложения?

1
19.12.2014, 10:52
3 ответа

Можно использовать 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 . '&nbsp;(' . $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 . '&nbsp;(' . $term->count . ')' . '</a></li>'; 
  } 
  echo '</ul>';
  }

?> 
2
19.02.2020, 22:53
  • 1
    Спасибо за код это работает отлично! Для все, кто хочет вышеупомянутый код, также являющийся активируемым по щелчку к ссылке каждого термина, используют следующий код: <? $terms php = get_terms ('страны'); если (! пустой ($terms) &&! is_wp_error ($terms)) {отзываются эхом' <ул.>'; foreach ($terms как $term) {$term = sanitize_term ($term, 'страны'); $term_link = get_term_link ($term, 'страны'); повторите' <литий> <href ="'. esc_url ($term_link)'".>'. $term-> имя. '&nbsp; ('. $term-> количество'.)''. </a> </литий>';} повторяют' </ул.>';}?> –  Traveler 10.06.2014, 06:46
  • 2
    Только для включения немного больше при включении 'hide_empty=0' сразу после термина 'страны' Вы сможете показать все результаты. Таким образом, первая строка будет читать: $terms = get_terms ('страны', 'hide_empty=0'); –  damienoneill2001 27.04.2016, 14:11

Можно попробовать его Запросом WP. Я еще не протестировал его, поэтому сообщите мне, работает ли это.

$query = new WP_Query( array( 'taxonomy' => 'term', 'posts_per_page' => -1 ) );
$count = $query->post_count;
0
19.02.2020, 22:53

Я не могу протестировать это прямо сейчас, но попытаться получить все условия для "стран" и затем цикла через них и получить 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>"; }
0
19.02.2020, 22:53

Теги

Похожие вопросы