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

Способ создания более точной навигации по постав в определенной категории за счет вывода меток, которые встречаются только в постах этой категории.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

Для того, чтобы вывести метки только из категорий, какие вы укажете, нужно создать специальную функцию. Для этого вставьте нижеприведенный код в файл 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 .= '<a>tag_id) .'">'. $tag->tag_name .'<span class="tags-post-count">'. $tag->posts_count .'</span></a>, ';
 
    return rtrim($out, ', ');
}

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

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

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

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

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. antonator

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

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

    Ответить
    1. Apathetic
      <?php echo get_category_tags(get_query_var('cat')); ?>

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

      Ответить
  2. Hoder

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

    Ответить
  3. Art

    Спасибо за sql.

    Ответить