/ / Função saída valores vazios no wordpress functions.php mas funciona quando chamado de outra página - php, wordpress

Função saída valores vazios no wordpress functions.php mas funciona quando chamado de outra página - 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;
}

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.phpe não está retornando nada.

Respostas:

0 para resposta № 1

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