Estou criando um menu de seleção de idade no administrador, preenchido a partir de uma taxonomia de age
. A taxonomia é hierárquica da seguinte maneira:
- 18-25 (pai, ID 183)
- 18 (criança)
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26-30 (pai, ID 184)
- 26
- 27
- 28.
- 29
- 30
Gostaria de listar apenas os filhos (18, 19, etc.) e não os pais (18-25, 26-30) etc. Atualmente, estou usando get_terms
o parent
argumento, mas ele não aceita mais de um ID dos pais. Aqui está o que tenho até agora, que mostra as crianças de 18 a 25 anos.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183',
));
Aqui está o que eu quero que ele faça, mas não é suportado. Eu também tentei com uma matriz, mas também não funciona.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183,184',
));
Vejo que existe uma função get_term_children , mas não tenho certeza de como usá-la, pois parece que ela também aceita apenas um valor. Por exemplo: neste exemplo, criaria uma lista não ordenada, mas eu poderia modificar o menu de seleção.
<?php
$termID = 183;
$taxonomyName = "age";
$termchildren = get_term_children( $termID, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>
fonte
get_terms
duas vezes e mesclar as duas matrizes de resultados?get_terms
ligação). Sua pergunta lido como se estivesse querendo todas as crianças de 2 mandatos pais particulares ..Respostas:
Isso deve funcionar para você:
fonte
$term->name
está em inválidoget_term_link()
, só aceita o termo ID, lesma ou objetoVocê também pode fazer:
Observei que o pai tem o campo "pai" igual a 0, e um filho tem seu ID pai.
fonte
wpse_exclude_top
parâmetro adicionado aos argumentos da consulta ;-). No entanto eu concordo, este é mais rápido do que a resposta aceitawpse_exclude_top
e,exclude_top
mas não as encontrei. O Google também não sabe disso. Onde está documentado?Podemos excluir os pais de nível superior filtrando-os usando o
terms_clauses
filtro para alterar a consulta SQL antes da execução. Dessa forma, não precisamos ignorar os pais noforeach
loop final, pois eles não estão no conjunto de termos retornado, economizando trabalho e codificação desnecessários.Você pode tentar o seguinte:
Para excluir os pais de nível superior, agora podemos passar
'wpse_exclude_top' => 1
com nossa matriz de argumentos. O novowpse_exclude_top
parâmetro é suportado pelo filtro acimaApenas uma observação:
get_term_link()
não aceite o nome do termo, apenas slug, ID ou o objeto do termo completo. Para desempenho, sempre passe sempre o termo objeto paraget_term_link()
se o termo objeto estiver disponível ( como neste caso )fonte
Por que você não pode simplesmente definir o
childless
argumento como verdadeiro?fonte
childless
argumento como true significa que você pode apenas atingir um nível de profundidade; portanto, isso não funciona para taxonomias com 3 ou mais níveis.Se você exibir vários filhos dos pais, tente isso. Exiba os IDs dos termos de menção e termo filho.
fonte