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

Метки из указанных рубрикМогут возникнуть моменты, когда метки нужно вывести только из указанных рубрик. А такой возможности разработчики WordPress не предоставляют, т.е. нет готовой функции, которая позволит вывести метки, например, только постов из категории с ID 5.

Чтобы вывести метки только указанных рубрик можно использовать функцию ниже. Для этого откройте файл темы function.php и поместите туда код функции. Размещать код можно в любое место файла, главное чтобы он оказался внутри тегов <?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 href="'. get_tag_link($tag->tag_id) .'">'. $tag->tag_name .'<sub>'. $tag->posts_count .'</sub></a>, ';

	return rtrim($out, ', ');
}

Теперь, когда мы разместили код в файле, мы можем использовать вызов этой функции там где нужно вывести метки. Давайте посмотрим на примере.

Пример вывода меток относящихся к постам размещенным в рубриках 37, 5 и 9:

<?php echo get_category_tags('37,5,9'); ?>

Если нужно изменить вывод, то отредактируйте строку

$out .= '<a href="'. get_tag_link($tag->tag_id) .'">'. $tag->tag_name .'<sub>'. $tag->posts_count .'</sub></a>, ';

именно она отвечает за то в каком виде выводятся метки на экран.

Если есть какие-то вопросы по работе функции задавайте их в комментариях.

Теги:
Рубрика: Разное | 04 июля 2011

Предыдущие записи из рубрики `Разное`

Один комментарий

Артур, 10.01.2016 в 20:15

Вопрос как ограничить количество выводимых меток

ОтветитьОтветить

Комментировать