Как вывести нужное количество тегов из категории?
Доброго времени суток. Как вывести определенное количество тегов из категории? Код ниже выводит все теги данной категории.
<?php $post_ids = get_objects_in_term( get_query_var( 'cat' ), 'category' ); if ( ! empty( $post_ids ) && ! is_wp_error( $post_ids ) ) { $tags = wp_get_object_terms( $post_ids, 'post_tag' ); if ( ! empty( $tags ) && ! is_wp_error( $tags ) ) { ?> <ul class="list__tags"> <?php foreach( $tags as $tag ) { ?> <li class="item__tag"><a href="<?php echo get_term_link( $tag, 'post_tag' ); ?>"><?php echo $tag->name; ?></a></li> <?php } ?> </ul> <?php } ?> <?php } ?> |
<?php $post_ids = get_objects_in_term( get_query_var( 'cat' ), 'category' ); if ( ! empty( $post_ids ) && ! is_wp_error( $post_ids ) ) { $tags = wp_get_object_terms( $post_ids, 'post_tag' ); if ( ! empty( $tags ) && ! is_wp_error( $tags ) ) { ?> <ul class="list__tags"> <?php foreach( $tags as $tag ) { ?> <li class="item__tag"><a href="<?php echo get_term_link( $tag, 'post_tag' ); ?>"><?php echo $tag->name; ?></a></li> <?php } ?> </ul> <?php } ?> <?php } ?>
Дополнительные вопросы
Ответы:
Вот твой метод
Вот связанный с ним WP_Term_Query , в описании которого указано, что он принимает $args, в котором может содержаться $number
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Чтобы вывести ограниченное количество тегов, полученных из записей текущей категории, после получения массива тегов нужно его отсортировать/обрезать через
array_slice(). Также желательно убрать дубли, потому чтоwp_get_object_terms()может вернуть повторяющиеся термины для набора записей.Пример для текущей рубрики:
$cat_id = get_query_var('cat'); $post_ids = get_objects_in_term($cat_id, 'category'); if (! empty($post_ids) && ! is_wp_error($post_ids)) { $tags = wp_get_object_terms($post_ids, 'post_tag', [ 'orderby' => 'count', 'order' => 'DESC', ]); if (! empty($tags) && ! is_wp_error($tags)) { $unique = []; foreach ($tags as $tag) { $unique[$tag->term_id] = $tag; } $tags = array_slice(array_values($unique), 0, 10); echo '<ul class="list__tags">'; foreach ($tags as $tag) { echo '<li><a href="' . esc_url(get_term_link($tag)) . '">' . esc_html($tag->name) . '</a></li>'; } echo '</ul>'; } }
Если нужно «10 самых популярных тегов внутри категории», сортировка по
countу term object может быть не совсем точной, потому чтоcountобщий по сайту, а не только внутри этой категории. Для строгой статистики нужно считать частоту тегов по выбранным записям вручную.Для обычного сайдбара/архива чаще достаточно варианта выше: собрать теги записей текущей категории, удалить дубли и вывести первые 10-20.