Как вывести нужное количество тегов из категории?

Ссылка скопирована
PHP
1 ответ

Доброго времени суток. Как вывести определенное количество тегов из категории? Код ниже выводит все теги данной категории.

<?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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Дмитрий К. Ответ

Чтобы вывести ограниченное количество тегов, полученных из записей текущей категории, после получения массива тегов нужно его отсортировать/обрезать через 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>';
    }
}

$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.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно