Как вывести теги только из определенной категории

При просмотре постов определенной категории интересно так же вывести и те теги, которые встречаются в этих постах. Например, если вы открыли категорию “Программы”, то в ней будет выводится список тегов, которые присутствуют в постах только этой категории. Таким образом можно достигнуть большей детализации выборки, облегчить пользователям поиск нужной информации, сделать хорошую внутреннюю перелинковку.

Для формирования списка тегов, используемых в постах определенной категории, вставьте в файл functions.php код:

function get_category_tags($cats) {
    global $wpdb;
    $tags = $wpdb->get_results
    ("
        SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, t2.count as posts_count, null as tag_link
        FROM
            wp_posts as p1
            LEFT JOIN wp_term_relationships as r1 ON p1.ID = r1.object_ID
            LEFT JOIN wp_term_taxonomy as t1 ON r1.term_taxonomy_id = t1.term_taxonomy_id
            LEFT JOIN wp_terms as terms1 ON t1.term_id = terms1.term_id, 
            wp_posts as p2
            LEFT JOIN wp_term_relationships as r2 ON p2.ID = r2.object_ID
            LEFT JOIN wp_term_taxonomy as t2 ON r2.term_taxonomy_id = t2.term_taxonomy_id
            LEFT JOIN wp_terms as terms2 ON t2.term_id = terms2.term_id
        WHERE
            t1.taxonomy = 'category' AND p1.post_status = 'publish' AND terms1.term_id IN (". $cats .") AND
            t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
            AND p1.ID = p2.ID
        ORDER by tag_name
    "); 
    foreach($tags as $tag)
        $out .= 'tag_id) .'">'. $tag->tag_name .''. $tag->posts_count .', '; 
    return rtrim($out, ', ');
}

Эта функция проверяет посты определенной категории, и составляет список тегов, используемых в них. Теперь осталось только вывести этот список, задав ID категории:


Этот код нужно вставить в шаблон. 14 – это ID категории. Если нужно вываести список тегов из постов, принадлежащих нескольким категориям, то ID этих категорий нужно перечислить через запятую:


Вывод тегов постов определенной категории – отличная возможность сделать ваш блог интереснее и добавить в него хорошую внутреннюю перелинковку, способствующую лучшей индексации.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

6 Комментарии

  1. Нужная штука. Только подскажи пожалуйста в каком месте задавать список категорий? Я в этом не особо понимаю еще.

    • Приведенный код выводит теги, используемые в постах определенной категории. То есть вставлять его нужно в шаблон, отвечающий за вывод постов определенной категории – index.php, archive.php и др.

  2. Посмотрите пожалуйста мой сайт, я не пойму никак, два часа ковырял код, и не получилось, выводит, но не там. В functions.php вставил код, а дальше не врублюсь куда правильно влепить код:
    < ?php echo get_category_tags('14'); ?>
    Поразмышляв , подумал, что нужно в коде вывода тегов, прописать отдельно, чтоб определенная категория, брала определенные для неё теги, ток как это правильно написать не знаю,вот весь код, что выводит теги:

    Популярные темы
    < ?php //class="clouds_xsmall wp_tag_cloud('smallest=8&largest=22'); ?>

    Дайте пожалуйста пример написания на 1 категорию. К примеру рубрика “Своими руками” – айди 23.

    Вот я пробовал так-

    Популярные темы
    < ?php //class="clouds_xsmall wp_tag_cloud('smallest=8&largest=22'); ?>
    < ?php echo get_category_tags('23'); ?>

    Выводит в правильном месте, только во всех разделах ( и вместе со старыми, но то не проблема)

  3. Автору 1000 поклонов. Нужно было как раз это, но пришлось малость попотеть, что бы запихать этот код в плагин WP-columns. Если кому нужно, то написал статью как это сделать http://sonax.name/?p=979

    P.S. Зарегистрировался на сайте, увидел, что Вы отключили в админке регистрирующимся слева все пункты, в том числе и пункт-раздел консоль. Написали бы статью как это сделать :)

  4. Может поможете или направите по нужному урлу. Пытаюсь сделать то же самое но для вывода меток товаров плагина Woocommerce. Задача та же вывести метки всех товаров определенной категории.

  5. К сожалению, приведенный пример в новой версии WP 3.9.1 не работает. Могли бы вы подсказать как правильно адаптировать его?

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*