web-dev-qa-db-fra.com

Requête taxonomique pour enfants de parents

Je suis coincé là-dessus. Je pensais que tout était correct mais j'ai alors réalisé que ce n'était pas le cas.

J'ai une taxonomie hiérarchique personnalisée basée sur l'emplacement. Les États sont au plus haut niveau et les pays sont des enfants. J'ai les états de premier niveau dans un menu de droite et, une fois choisi, je suis dirigé vers la page taxonomie de cet état. Dans cette page d'état, le menu de droite devrait afficher les comtés uniquement pour cet état particulier. Au lieu de cela, il récupère tous les enfants des états et les affiche. Puisqu'il s'agit d'une page de taxonomie pour l'état.

S'agit-il d'une requête pour déterminer la page de niveau supérieur actuelle et simplement afficher les enfants sous forme de liens?

Mon code actuel est ci-dessous.

$taxonomyName = "location";
//This gets top layer terms only.  This is done by setting parent to 0.  
$parent_terms = get_terms($taxonomyName, array('parent' => 0, 'orderby' => 'slug', 'hide_empty' => false));   
echo '<ul>';
foreach ($parent_terms as $pterm) {
    //Get the Child terms
    $terms = get_terms($taxonomyName, array('parent' => $pterm->term_id,'orderby' => 'slug', 'hide_empty' => false));
    foreach ($terms as $term) {
        echo '<li><h3><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</h3></a></li>';  
    }
}
echo '</ul>';
1
Deon

Utilisez get_queried_object() pour obtenir le terme recherché sur une page de catégorie:

$this_term = get_queried_object();
$args = array(
    'parent' => $this_term->term_id,
    'orderby' => 'slug',
    'hide_empty' => false
);
$child_terms = get_terms( $this_term->taxonomy, $args );
echo '<ul>';
foreach ($child_terms as $term) {
    echo '<li><h3><a href="' . get_term_link( $term->name, $this_term->taxonomy ) . '">' . $term->name . '</h3></a></li>';  
}
echo '</ul>';
2
Milo