Skip to content

Instantly share code, notes, and snippets.

@seredniy
Created July 20, 2016 16:12
Show Gist options
  • Save seredniy/68f073094c6ba295262072472a330ce1 to your computer and use it in GitHub Desktop.
Save seredniy/68f073094c6ba295262072472a330ce1 to your computer and use it in GitHub Desktop.
Вывод всех меток для определенной категории
DISCLAIMER: this post is older than one year and may not be up to date with latest WordPress version.
Do you ever wanted to be able to get tags related to one (or more) specific category? If yes, I’m pretty sure you’ll be delighted with this very cool tip.
First, here is the function you have to paste in your function.php file:
function get_category_tags($args) {
global $wpdb;
$tags = $wpdb->get_results
("
SELECT DISTINCT terms2.term_id as tag_id, terms2.name as tag_name, 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 (".$args['categories'].") AND
t2.taxonomy = 'post_tag' AND p2.post_status = 'publish'
AND p1.ID = p2.ID
ORDER by tag_name
");
$count = 0;
foreach ($tags as $tag) {
$tags[$count]->tag_link = get_tag_link($tag->tag_id);
$count++;
}
return $tags;
}
Once you have pasted the function, you can use it in your theme:
$args = array('categories' => '12,13,14');
$tags = get_category_tags($args);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment