web-dev-qa-db-fra.com

Obtenez des termes de second niveau de taxonomie personnalisée

Je souhaite obtenir les termes de second niveau d'un terme parent spécifique (premier niveau) dans une taxonomie personnalisée. Cela semble compliqué mais serait utile.

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

Disons, si SubTerm->parent est l'identifiant du terme 1, alors je veux sortir les sous-termes 1.1 et 1.2 mais pas 1.2.1.

wp_list_categories(array('depth' => 2, 'taxonomy' => 'customtax')); n’est pas ce que je recherche, car il répertorie les termes avec leurs liens, ce que je ne veux pas, et il n’ya pas d’option de filtrage par SubTerm->parent id.

Donc, une idée?

4
Adige72

Vous pouvez utiliser le array_filter de PHP pour traiter les résultats d'une fonction de requête de taxonomie qui renvoie ses résultats, puis les afficher. Quelque chose comme:

# 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;
});

À ce stade, vous pouvez générer le rendu de $second_level dans le format de votre choix.

NB Si cela est souvent utilisé sur un côté occupé devrait éviter tous ces appels get_term supplémentaires en lisant dans le tableau $whole_tax en supposant que la documentation indique que get_term frappe toujours la base de données lorsqu'un identifiant est transmis.

5
Richard