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'));
}
?>
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/