Obter termos de segundo nível de taxonomia personalizada

4

Eu quero obter termos de segundo nível de um termo pai (primeiro nível) específico em uma taxonomia personalizada. Parece complicado, mas seria útil.

Term 1
   SubTerm-1.1
   SubTerm-1.2
       SubTerm-1.2.1
Term 2
   SubTerm-2.1

Digamos que, se SubTerm->parent for o ID do Termo 1, eu quero gerar o Subterm 1.1 e 1.2, mas não o 1.2.1.

wp_list_categories(array('depth' => 2, 'taxonomy' => 'customtax')); não é o que estou procurando, pois lista termos com seus links, o que eu não quero, e não há opção de filtragem por SubTerm->parent id.

Então, alguma ideia?

    
por Adige72 18.07.2012 / 01:14

2 respostas

4

Você pode usar o array_filter do PHP para processar os resultados de uma função de consulta de taxonomia que retorna seus resultados e exibi-los. Algo como:

# This returns the whole taxonomy...
$whole_tax = get_terms('customtax', array('hide_empty' => 0));
$second_level = array_filter($whole_tax, function ($t) {
  # This term has a parent, but its parent does not.
  return $t->parent != 0 && get_term($t->parent, 'customtax')->parent == 0;
});

Neste ponto, você pode processar $second_level para a saída no formato que quiser.

NB. Se isso for frequentemente usado em um lado ocupado, evite todas as chamadas get_term extras lendo a matriz $whole_tax , assumindo a declaração da documentação de que get_term sempre atinge o banco de dados quando passa um id.

    
por Richard 18.07.2012 / 09:45
-1
$tax ='taxonomy';
        $args = array(
          'taxonomy' => $tax,
          'hide_empty' => false,
          'parent' => 0,
          );
    $toplv_term_query = new WP_Term_Query($args);
        foreach($toplv_term_query->get_terms() as $toplv_term){
             $args = array(
               'taxonomy' => $tax,
               'hide_empty' => false,
               'parent' => $toplv_term->term_id,
              );
          $secondlv_term_query = new WP_Term_Query($args);
              foreach($secondlv_term_query->get_terms() as $secondlv_term){
                   $secondlv_term->term_id;

             }
        }
    
por webjuice 27.02.2017 / 15:28