The question:
How can i get taxonomies of a post type?
If I have a post type event
and i need to find out the list of taxonomies that are attached to that post type. How do I find them?
The Solutions:
Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.
Method 1
I think I’ve got it! After looking at couple of functions in the taxonomy.php file in WordPress I have found the function get_object_taxonomies();
which did the trick 🙂
Method 2
get_categories will do the job.
get_categories('taxonomy=taxonomy_name&type=custom_post_type');
Method 3
Have you tried anything? something like this?
<?php
$args=array(
'object_type' => array('event')
);
$output = 'names'; // or objects
$operator = 'and'; // 'and' or 'or'
$taxonomies=get_taxonomies($args,$output,$operator);
if ($taxonomies) {
foreach ($taxonomies as $taxonomy ) {
echo '<p>'. $taxonomy. '</p>';
}
}
?>
Method 4
$taxonomies = get_taxonomies( [ 'object_type' => [ 'custom_post_type' ] ] );
Method 5
Use get_object_taxonomies
(https://developer.wordpress.org/reference/functions/get_object_taxonomies/), which takes either the name of your custom post type or a post object as the parameter:
$taxonomies = get_object_taxonomies('custom_post_type');
$taxonomies = get_object_taxonomies($custom_post_object);
get_taxonomies()
won’t return any taxonomies that are used by multiple post types (https://core.trac.wordpress.org/ticket/27918).
Method 6
get_post_taxonomies()
https://developer.wordpress.org/reference/functions/get_post_taxonomies/
This worked for me.
Method 7
Apologies for raising an old post, but I came across this problem while looking for an answer for my use case.
I wanted to retrieve all available taxonomies for a post type, and also retrieve all available terms per taxonomy.
Thank you to Nick B for setting me in the right direction with his answer: https://wordpress.stackexchange.com/a/357448/198353
// get a list of available taxonomies for a post type
$taxonomies = get_taxonomies(['object_type' => ['your_post_type']]);
$taxonomyTerms = [];
// loop over your taxonomies
foreach ($taxonomies as $taxonomy)
{
// retrieve all available terms, including those not yet used
$terms = get_terms(['taxonomy' => $taxonomy, 'hide_empty' => false]);
// make sure $terms is an array, as it can be an int (count) or a WP_Error
$hasTerms = is_array($terms) && $terms;
if($hasTerms)
{
$taxonomyTerms[$taxonomy] = $terms;
}
}
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0