This issue comes up often, where I need to show a list of all terms belonging to a set of posts being queried. One useful case would be to allow the user to filter the queried posts by clicking on a ‘term’ from the generated list of terms.
Let’s say we are on a taxonomy-term archive page, and we want to show a list of all the terms belonging to the queried set of posts. This is what we can do:
// getting the posts we want based on the taxonomy of current query, returning an array of post IDs
$someposts = get_posts(
array(
'post_type' => 'custom_post_type',
'posts_per_page' => -1,
'fields' => 'ids', // return an array of ids
'tax_query' => array(
array(
'taxonomy' => get_query_var('taxonomy'),
'field' => 'slug',
'terms' => $term_slug = get_queried_object()->slug,
)
)
)
);
And to get all the taxonomy terms belonging to the retrieved posts above:
$somepoststerms = get_terms(
array(
'taxonomy' => 'custom_tax',
'object_ids' = $someposts;
)
);