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 дней гарантии