I’ve created a custom taxonomy. It’s working just as expected, aside from it is not showing in the get_taxonomies array. get_terms function returns an invalid taxonomy error.
I want to use get_terms to loop through the Double India Pale Ales and print each name for a select box.
Here is the code used to register it.
add_action( 'init', 'double_ipa_init' );
function double_ipa_init() {
register_taxonomy(
'double-ipa',
array (
0 => 'post',
1 => 'page',
),
array(
'hierarchical' => true,
'label' => 'Double IPAs',
'show_ui' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'double-ipa'
),
'singular_label' => 'Double IPA'
)
);
}
This code is in a plugin, and is on Multisite.
Thanks in advance for your help.
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
The Invalid Taxonomy error will be raised by the function get_terms(). You’re registring your taxonomy on the init action hook. Therefore you have to call your get_terms() function on the same or a later hook.
Try this snippet. It should display all term names of your taxonomy, regardless if the term is empty.
add_action('init', 'wpse29164_registerTaxonomy');
function wpse29164_registerTaxonomy() {
$args = array(
'hierarchical' => true,
'label' => 'Double IPAs',
'show_ui' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'double-ipa'
),
'singular_label' => 'Double IPA'
);
register_taxonomy('double-ipa', array('post', 'page'), $args);
$terms = get_terms('double-ipa', array('hide_empty' => false));
foreach ($terms as $term) {
echo $term->name;
}
}
Method 2
You’re looking to use get_terms() before ‘Init’ action hook.
Here’s the order of the hooks run in a typical request:
muplugins_loaded registered_taxonomy registered_post_type plugins_loaded sanitize_comment_cookies setup_theme load_textdomain after_setup_theme auth_cookie_malformed auth_cookie_valid set_current_user **init** widgets_init register_sidebar wp_register_sidebar_widget wp_default_scripts wp_default_stypes admin_bar_init add_admin_bar_menus wp_loaded parse_request send_headers parse_query pre_get_posts posts_selection wp template_redirect get_header wp_head wp_enqueue_scripts wp_print_styles wp_print_scripts
Method 3
I got the same issue before, but using WP_Term_Query helped me retrieve what i needed give it a try it should work.
More details here :
https://developer.wordpress.org/reference/classes/WP_Term_Query/__construct/
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