Как ограничить количество терминов (термины работают как категории)

10 сент. 2013 г., 21:32:22
Просмотры: 16.4K
Голосов: 6

Здравствуйте, я создал таксономию в пользовательском типе записи, которая работает как категория.

Затем я создал термины, которые функционируют как категории.

Я создал виджет, который показывает все термины из таксономии. Все работает отлично.

Но я не могу понять, как ограничить количество отображаемых терминов.

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

Спасибо за помощь!

Код для отображения всех терминов:

// Получаем все термины таксономии 'new_category'
$terms = get_terms('new_category');
echo '<ul>';
foreach ($terms as $term) {
    $term_link = get_term_link( $term, 'new_category' );
    echo '<li><a href="' . $term_link . '"><div>' . $term->name . '</div></a></li>';

}
echo '</ul>';
1
Комментарии

Вы читали документацию по функции get_terms?

Milo Milo
10 сент. 2013 г. 21:37:17
Все ответы на вопрос 3
0
number 
    (integer) Максимальное количество терминов для возврата. По умолчанию возвращаются все. 

http://codex.wordpress.org/Function_Reference/get_terms

Итак...

$terms = get_terms('new_category',array('number' => 5));

Но есть большая вероятность, что некоторые из ваших терминов никогда не появятся. Вы получите первые пять или последние пять (в примере) в зависимости от порядка сортировки. Возможно, вам нужно что-то вроде этого:

$terms = get_terms('category');
if (!is_wp_error($terms)) {
  $pick = ($pick <= count($terms)) ?: count($terms);
  $rand_terms = array_rand($terms, $pick);
  echo '<ul>';
  foreach ($rand_terms as $key => $term) {
    $term =  $terms[$term];
    $term_link = get_term_link( $term );
    var_dump($term_link);
    if (!is_wp_error($term_link)) {
      echo '<li><a href="' . $term_link . '"><div>' . $term->name . '</div></a></li>';
    }
  }
  echo '</ul>';
}
10 сент. 2013 г. 21:59:20
0
$terms = get_terms('new_category', array('number' => 4));
echo '<ul>';
foreach ($terms as $term) {
    $term_link = get_term_link( $term, 'new_category' );
    echo '<li><a href="' . $term_link . '"><div>' . $term->name . '</div></a></li>';

}
echo '</ul>';
8 июн. 2018 г. 14:57:47
0

измените значение number по необходимости

$terms = get_terms('new_category', 'number=10');
echo '<ul>';
foreach ($terms as $term) {
    $term_link = get_term_link( $term, 'new_category' );
    echo '<li><a href="' . $term_link . '"><div>' . $term->name . '</div></a></li>';

}
echo '</ul>';
10 сент. 2013 г. 21:51:14