/ / Funzione restituisce valori vuoti in wordpress functions.php ma funziona quando viene chiamato da un'altra pagina: php, wordpress

La funzione emette valori vuoti in wordpress functions.php ma funziona quando viene chiamata da un'altra pagina: php, wordpress

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.phpe non restituisce nulla.

risposte:

0 per risposta № 1

Se 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");