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;
}
Esta função retorna uma lista de taxonomias customizadas e quais palavras são encontradas se a função é chamada em um template. Mas eu quero atribuir os valores da função a uma variável em functions.php
e não está retornando nada.
Respostas:
0 para resposta № 1Se suas taxonomias são realmente criadas com umplugin em vez de criá-los com código em suas functions.php o resultado de get_terms estará vazio até que as taxonomias tenham iniciado, o que é melhor no início do plugin, provavelmente usando o hook "init", então você teria que ligar o seu função após o gancho e usá-lo apenas em seus arquivos de modelo de tema (não em functions.php) basicamente você faz algo como:
add_action("init", "get_people_cats", 9999);
Então você chamaria isso normalmente: $cats = get_people_cats("person_category");
Espero que isso resolve o seu problema (eu sei que me levou cerca de uma hora para resolver isso quando eu corri para ele).
0 para resposta № 2
Se você não está recebendo os termos de volta, provavelmentedevido a onde a taxonomia está sendo registrada. Se estiver sendo registrado em um gancho de inicialização, é provável que você tente imprimi-los antes que a taxonomia tenha sido registrada.
Você pode testá-lo com o seguinte:
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");
Ao conectar-se ao wp_footer, ele não será chamado até bem depois de qualquer plug-in que possa ter registrado a taxonomia.
// UPDATE //
Consegui. Para criar uma matriz, faça o seguinte:
$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;
}
Isso lhe dará uma variedade de $term->id => $term->name --
Você pode querer reverter isso dependendo de como você está usando o array.
0 para resposta № 3
Tente isso, funciona bem no meu arquivo functions.php em um site local:
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");