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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
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