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

Иногда при создании удобной навигации бывает полезно выводить не все метки, а только те, которые присутствуют в постах, опубликованных в определенных категориях.

Для того, чтобы вывести метки только из категорий, какие вы укажете, нужно создать специальную функцию. Для этого вставьте нижеприведенный код в файл 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, ', ');
}

Эта функция формирует список меток, которыми помечены посты, опубликованные в определенных категориях. Рядом с каждой меткой выводится количество постов. Теперь осталось вывести список меток. Для этого нужно вставить в шаблон:


24,35,46 – это ID категорий, из которых нужно выводить метки.

Как пользоваться этой возможностью? Например, можно выводить список меток из категории на странице постов определенной категории. Для этого добавьте в файл, отвечающий за вывод постов из категории (обычно это index.php, archive.php или categiry-ID.php):


	

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

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

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

  1. А как — не привязываясь к ID категорий?

    Требуется выводить перечни меток тех категорий, где находится пользователь.

    • < ?php echo get_category_tags(get_query_var('cat')); ?>

      Попробуйте, должно сработать.
      Если требуется вставлять куда вне цикла вывода постов, код будет другой.

  2. Спасибо плагин работает отлично, но я создал два таксомании date и denomination, как мне вывести метки из пользовательских таксоманий в категории сайта?

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

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


*