Wordpress get taxonomy name with slug Wordpress get taxonomy name with slug wordpress wordpress

Wordpress get taxonomy name with slug


WordPress does provide a function to get the taxonomy information from its slug.

$taxonomy_details = get_taxonomy( $slug );

This will return the taxonomy details as an object, which includes the various labels for the taxonomy. For example here's the returned object when called for the standard Category taxonomy, e.g. get_taxonomy( 'category' );

stdClass Object(    [labels] => stdClass Object        (            [name] => Categories            [singular_name] => Category            [search_items] => Search Categories            [popular_items] =>             [all_items] => All Categories            [parent_item] => Parent Category            [parent_item_colon] => Parent Category:            [edit_item] => Edit Category            [view_item] => View Category            [update_item] => Update Category            [add_new_item] => Add New Category            [new_item_name] => New Category Name            [separate_items_with_commas] =>             [add_or_remove_items] =>             [choose_from_most_used] =>             [not_found] => No categories found.            [menu_name] => Categories            [name_admin_bar] => category        )    [description] =>     [public] => 1    [hierarchical] => 1    [show_ui] => 1    [show_in_menu] => 1    [show_in_nav_menus] => 1    [show_tagcloud] => 1    [show_in_quick_edit] => 1    [show_admin_column] => 1    [meta_box_cb] => post_categories_meta_box    [rewrite] => Array        (            [hierarchical] => 1            [slug] => category            [with_front] => 1            [ep_mask] => 512        )    [query_var] => category_name    [update_count_callback] =>     [_builtin] => 1    [cap] => stdClass Object        (            [manage_terms] => manage_categories            [edit_terms] => manage_categories            [delete_terms] => manage_categories            [assign_terms] => edit_posts        )    [name] => category    [object_type] => Array        (            [0] => post        )    [label] => Categories)

Source: https://codex.wordpress.org/Function_Reference/get_taxonomy


As the accepted answer does not answer the question, I provide an answer here even though the question is very old.

The third (required) argument to get_term_by() is the name of the taxonomy itself, and so this function can not be used.

get_taxonomies() can't be used either because then you would have to match the entire rewrite array, which you probably don't have access to.

So the only way I found was to use the private array $wp_taxonomies:

function get_tax_name_from_slug($slug){  foreach ($wp_taxonomies as $key => $value) {    if ($value->rewrite['slug'] === $slug){        return $key;    }  }}

I really hope Wordpress will provide a way to do this without accessing their internal data structures.


$args = array(                    'post_type' => 'awards',                    'post_status' => 'publish',                    'posts_per_page' => 4,                     'orderby' => 'ID',                     'order' => 'DESC',                    'tax_query' => array(                        'relation' => 'AND',                        array(                            'taxonomy' => 'awards_categories',                            'field' => 'slug',                            'terms' => $award_solution                        ),                        array(                            'taxonomy' => 'year',                            'field' => 'slug',                            'terms' => $yearvalue                        ),                    )                );

how we fetch this with wp select query