web-dev-qa-db-fra.com

Pourquoi ma taxonomie personnalisée personnalisée ne figure-t-elle pas dans le tableau get_taxonomies?

J'ai créé une taxonomie personnalisée. Cela fonctionne comme prévu, à part qu'il n'apparaît pas dans le tableau get_taxonomies. La fonction get_terms renvoie une erreur invalid taxonomy.

Je souhaite utiliser get_terms pour parcourir les Double India Pale Ales et imprimer chaque nom dans une zone de sélection.

Voici le code utilisé pour l’enregistrer.

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'
        )
    );
}

Ce code est dans un plugin et se trouve sur Multisite.

Merci d'avance pour votre aide.

3
Jeff Sebring

L'erreur Invalid Taxonomy sera générée par la fonction get_terms(). Vous enregistrez votre taxonomie sur le crochet d'action init. Par conséquent, vous devez appeler votre fonction get_terms() sur le même hook ou sur un hook ultérieur.

Essayez cet extrait. Il devrait afficher tous les noms de termes de votre taxonomie, que le terme soit vide ou non.

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;
    }
}
7
rofflox

Vous cherchez à utiliser get_terms () avant le crochet d'action 'Init'.

Voici l'ordre d'exécution des hooks dans une requête typique:

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
4
Janagaran

J'ai eu le même problème avant, mais utiliser WP_Term_Query m'a aidé à récupérer ce dont j'avais besoin d'essayer, cela devrait fonctionner. Plus de détails ici: https://developer.wordpress.org/reference/classes/WP_Term_Query/__construct/

0
Amine Faiz