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








А как — не привязываясь к ID категорий?
Требуется выводить перечни меток тех категорий, где находится пользователь.
<?php echo get_category_tags(get_query_var('cat')); ?>Попробуйте, должно сработать.
Если требуется вставлять куда вне цикла вывода постов, код будет другой.
Спасибо плагин работает отлично, но я создал два таксомании date и denomination, как мне вывести метки из пользовательских таксоманий в категории сайта?
Спасибо за sql.