Yandex Metrika
sanches.free 21 просмотр

Облако меток только по постам конкретной рубрики: WP_Query затем wp_tag_cloud

Разбор задачи

Встроенный wp_tag_cloud() не фильтрует по рубрике напрямую. Обертка дважды обходит данные: лёгкий запрос постов ограниченный cat затем ограничение тегов по этим объектам через tax_query или ручную агрегацию.

<?php
function ciftix_tag_cloud_for_category(int $catId): string {
    $ids = get_posts([
        'post_type' => 'post',
        'posts_per_page' => -1,
        'fields' => 'ids',
        'category' => $catId,
        'no_found_rows' => true,
    ]);
    if (!$ids) {
        return '';
    }
    $tags = wp_get_object_terms($ids, 'post_tag', ['orderby' => 'count', 'order' => 'DESC']);
    $include = wp_list_pluck($tags, 'term_id');
    return wp_tag_cloud([
        'include' => $include,
        'echo' => false,
    ]) ?: '';
}

На крупной базе кешируйте HTML облака на уровень объекта (transient) с инвалидированием при save_post нужной категории.

Замечания перед выкладкой

Вносите правки только через среду с бэкапом и понятным diff. Не смешивайте term_id постовых рубрик с term_id меток при отладке — разные таксономии.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии