web-dev-qa-db-fra.com

Comment vérifier si l'utilisateur se trouve sur un terme de taxonomie parent, enfant ou petit-enfant?

J'ai une taxonomie personnalisée: product_range et il a 3 niveaux:

(1 - Parent) Produit

(2 - Enfant) Catégorie de produit

(3 - petits-enfants) Sous-catégorie de produits

Je dois afficher un contenu différent en fonction de la page sur laquelle l'utilisateur se trouve. Comment puis-je vérifier si l'utilisateur est sur la page parente et ensuite afficher quelque chose, si l'utilisateur est sur la page enfant, afficher quelque chose d'autre et encore si ' re sur la page des petits-enfants.

Jusqu'ici, j'ai ce qui affiche un contenu différent selon que l'utilisateur se trouve sur la page parent ou enfant, mais je dois aller plus loin:

<?php 
     $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); 
     if($term->parent > 0) { 
       // THIS IS THE CHILD PAGE
       include(locate_template('product-range-category-index.php'));
     } 
     else { 
       // THIS IS THE PARENT PAGE
       include(locate_template('associated-product-ranges.php'));
     }
?>
1
Neelam Khan

Essayez get_ancestors() :

$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );

$ancestors = get_ancestors( $term->term_id, 'product_range', 'taxonomy' );

$hierarchy_levels = count( $ancestors );

switch ( $hierarchy_levels ) {
    case 0:
        // THIS IS THE PARENT CATEGORY
        // DO YOUR STUFF
        break;

    case 1:
        // THIS IS THE PARENT CATEGORY
        // DO YOUR STUFF
        break;

    case 2:
        // THIS IS THE PARENT CATEGORY
        // DO YOUR STUFF
        break;
}

Une autre solution (mais contraignante) serait de déterminer la hiérarchie actuelle de l'utilisateur en fonction de la structure de l'URL. La contrainte serait que vous devez conserver une structure hiérarchique "simple" ou "classique" dans les URL de votre catégorie, comme suit:

  • https://example.com/parent/child/grandchild/
  • https://example.com/parent/child/
  • https://example.com/parent/
0
ClemC