Eu tenho uma taxonomia hierárquica chamada 'localizações geográficas'. Ele contém continentes em um primeiro nível e, em seguida, os países de cada um. Exemplo:
Europe
- Ireland
- Spain
- Sweden
Asia
- Laos
- Thailand
- Vietnam
etc.
Usando get_terms (), consegui exibir a lista completa de termos, mas os continentes se misturam com os países, em uma grande lista simples.
Como posso gerar uma lista hierárquica como acima?
taxonomy
list
terms
hierarchical
mike23
fonte
fonte
Respostas:
Use
wp_list_categories
com o'taxonomy' => 'taxonomy'
argumento, ele foi criado para criar listas hierárquicas de categorias, mas também suporta o uso de uma taxonomia customizada.Exemplo de códice:
Exibir termos em uma taxonomia customizada
Se a lista voltar plana, é possível que você precise apenas de um pouco de CSS para adicionar preenchimento às listas, para poder ver sua estrutura hierárquica.
fonte
Sei que essa é uma pergunta muito antiga, mas se você precisar criar uma estrutura real de termos, talvez seja um método útil para você:
O uso é o seguinte:
fonte
$into[$cat->term_id] = $cat;
em$into[] = $cat;
Ter o ID do termo como a chave da matriz é irritante (você não pode obter o primeiro elemento facilmente usando a tecla 0) e inútil (você já está armazenando o$cat
objeto e pode obter o ID usando aterm_id
propriedade.Não conheço nenhuma função que faça o que você deseja, mas você pode criar algo assim:
Eu não testei isso, mas você pode ver no que estou falando. O que o código acima fará é fornecer apenas dois níveis
EDIT: ahh sim, você pode usar wp_list_categories () para fazer o que depois.
fonte
wp_list_categories()
para adicionar seus parâmetros GET. Ou ainda melhor, crie um filtro para a função adicionar os bits que você deseja. Não me pergunte como fazer isso como eu ainda não tenho sido capaz de colocar minha cabeça em torno dele :(wp_list_categories
se você quiser um maior controle sobre a saída, ele vai fazer o seu código muito mais reutilizável ..Você pode usar wp_list_categories (), com um argumento 'taxonomy'.
fonte
Como eu estava procurando o mesmo, mas para obter os termos de um post, finalmente compilei isso e funciona para mim.
O que faz:
• obtém todos os termos de um nome de taxonomia para uma postagem específica.
• para uma taxonomia hierárquica com dois níveis (ex: nível1: 'país' e nível2: 'cidades'), cria um h4 com o nível1 seguido por uma lista ul do nível2 e para todos os itens do nível1.
• se a taxonomia não for hierárquica, ela criará apenas uma lista ul de todos os itens. Aqui está o código (eu o escrevo para mim, então tentei ser o mais genérico possível, mas ...):
Então, finalmente, você chama a função com isso (obviamente, você substitui my_taxonomy pelo seu):
finishingLister('my_taxonomy');
Eu não finjo que é perfeito, mas como eu disse, funciona para mim.
fonte
O código a seguir gerará uma lista suspensa com termos, mas também poderá gerar qualquer outro elemento / estrutura editando a variável $ outputTemplate e editando as linhas str_replace:
fonte
Eu tive esse problema e nenhuma das respostas aqui funcionou para mim, por um motivo ou outro.
Aqui está minha versão atualizada e funcional.
E uso:
fonte
Usei o código @popsi que estava funcionando muito bem e o tornei mais eficiente e fácil de ler:
Uso:
fonte
Certifique-se de que
hierarchical=true
seja passado para suaget_terms()
ligação.Observe que esse
hierarchical=true
é o padrão, portanto, apenas certifique-se de que ele não tenha sido substituídofalse
.fonte
get_terms()
retornará uma lista completa dos termos (como indicado no OP), mas não uma lista hierárquica mostrando o relacionamento pai / filho conforme solicitado.Aqui eu tenho uma lista suspensa de quatro níveis com o primeiro item oculto
fonte