Perché la mia Tassonomia Personalizzata funzionante non è nell'array get_taxonomies?

22 set 2011, 06:31:06
Visualizzazioni: 28.1K
Voti: 7

Ho creato una tassonomia personalizzata. Funziona esattamente come previsto, tranne per il fatto che non appare nell'array get_taxonomies. La funzione get_terms restituisce un errore di invalid taxonomy.

Voglio utilizzare get_terms per scorrere le Double India Pale Ales e stampare ogni nome in una casella di selezione.

Ecco il codice utilizzato per registrarla.

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

Questo codice si trova in un plugin ed è su Multisite.

Grazie in anticipo per il vostro aiuto.

1
Commenti

pubblica il tuo codice per get_taxonomies e get_terms. Prova anche a impostare l'argomento public su true.

Assad Nazar Assad Nazar
22 set 2011 10:17:07
Tutte le risposte alla domanda 3
5
14

L'errore Invalid Taxonomy viene sollevato dalla funzione get_terms(). Stai registrando la tua tassonomia sull'hook di azione init. Pertanto, devi chiamare la tua funzione get_terms() sullo stesso hook o su uno successivo.

Prova questo snippet. Dovrebbe visualizzare tutti i nomi dei termini della tua tassonomia, indipendentemente dal fatto che il termine sia vuoto.

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;
    }
}
22 set 2011 10:45:28
Commenti

Se ho capito bene, mi stai suggerendo di eliminare il wrapper della funzione e di eseguirla direttamente dal plugin. Proverò a farlo.

Jeff Sebring Jeff Sebring
22 set 2011 18:44:42

Rimuovendo il wrapper ottengo questo errore - Fatal error: Call to a member function add_rewrite_tag() on a non-object

Jeff Sebring Jeff Sebring
22 set 2011 19:27:34

Il problema che sto riscontrando riguarda l'ordine in cui eseguo il codice che costruisce le pagine rispetto alle tassonomie. La soluzione consisterà nel trovare un modo creativo per riorganizzare la memoria nelle mie funzioni.

Jeff Sebring Jeff Sebring
22 set 2011 20:14:13

@Jeff Il codice sopra dovrebbe anche essere racchiuso all'interno di una funzione e chiamato sull'hook di azione init. Scusa per la confusione.

Roman Roman
22 set 2011 20:15:45

Sì, in realtà non avevo mai provato a registrare da plugins_loaded. Il problema era dove stavo eseguendo il codice della pagina delle opzioni. Grazie per il tuo aiuto.

Jeff Sebring Jeff Sebring
23 set 2011 19:38:17
0

Stai cercando di utilizzare get_terms() prima dell'action hook 'Init'.

Ecco l'ordine degli hook eseguiti in una tipica richiesta:

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
25 gen 2013 10:39:08
0

Anch'io ho avuto lo stesso problema in precedenza, ma utilizzare WP_Term_Query mi ha aiutato a recuperare ciò di cui avevo bisogno. Provalo, dovrebbe funzionare. Maggiori dettagli qui: https://developer.wordpress.org/reference/classes/WP_Term_Query/__construct/

27 feb 2019 16:48:21