function get_people_cats($taxonomy) {
$output = "";
$terms = get_terms($taxonomy);
$count = count($terms);
if ( $count > 0 ):
foreach ( $terms as $term ):
$output .= """. $term->name .""". "=>";
$output .= """. $term->term_id."",";
endforeach;
endif;
return $output;
}
Questa funzione restituisce un elenco di tassonomie personalizzate e quali parole vengono trovate se la funzione viene chiamata in un modello. Ma voglio assegnare i valori della funzione a una variabile in functions.php
e non restituisce nulla.
risposte:
0 per risposta № 1Se le Tassonomie sono effettivamente create con aplugin invece di crearli con il codice nelle tue funzioni.php il risultato di get_terms sarà vuoto fino a quando le tassonomie non saranno iniziate, il che è già iniziato a livello di plugin ancora meglio, molto probabilmente usando l'hook "init", quindi dovresti agganciare il tuo funzione dopo l'hook e usarlo solo nei file template del tema (non in functions.php) in modo basilare fai qualcosa come:
add_action("init", "get_people_cats", 9999);
Allora lo chiameresti normale: $cats = get_people_cats("person_category");
Spero che questo risolva il tuo problema (so che mi ci è voluta circa un'ora per risolvere questo problema quando mi sono imbattuto in esso).
0 per risposta № 2
Probabilmente non stai ricevendo i terminia causa di dove viene registrata la tassonomia. Se viene registrato in un hook init, è probabile che tu stia cercando di stamparli prima che la tassonomia sia stata effettivamente registrata.
Puoi testarlo con il seguente:
function get_people_cats( $taxonomy ) {
$output = "";
$terms = get_terms("category");
$count = count( $terms );
if ( $count > 0 ):
foreach ( $terms as $term ):
$output .= $term->name."=>".$term->term_id;
endforeach;
endif;
return $output;
}
function echo_cats() {
echo get_people_cats("taxonomy_name", array("hide_empty" => 0) );
}
add_action("wp_footer", "echo_cats");
Agganciandosi a wp_footer non viene chiamato fino a molto dopo eventuali plug-in che potrebbero aver registrato la tassonomia.
// AGGIORNARE //
Fatto. Per creare un array basta fare questo:
$terms = get_terms($taxonomy, array("hide_empty" => false) );
if( !is_wp_error( $terms ) ) {
foreach( $terms as $term ) {
$types[$term->term_id] = $term->name;
}
}
return $types;
}
Questo ti darà una serie di $term->id => $term->name --
potresti volerlo invertire a seconda di come stai usando l'array.
0 per risposta № 3
Prova questo, funziona bene nel mio file functions.php su un sito locale:
function get_people_cats( $taxonomy ) {
$output = "";
$terms = get_terms( $taxonomy );
$count = count( $terms );
if ( $count > 0 ):
foreach ( $terms as $term ):
$output .= $term->name."=>".$term->term_id;
endforeach;
endif;
return $output;
}
echo get_people_cats("category");