Imaginez que j'ai une structure d'URL comme celle-ci: www.domain.com/category/subcategory/
Ceci est mon code:
<?php
$args=array(
'child_of' => $cat-id,
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC'
);
$categories=get_categories($args);
foreach($categories as $category) {
echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'; }
?>
Lorsque je suis sur "www.domain.com/category/", le code affiche correctement tous les enfants de la catégorie, mais lorsqu'il est sur "www.domain.com/category/subcategory/", le code n'affiche aucun résultat La sous-catégorie n'a pas d'enfants. J'ai besoin du code pour afficher uniquement les enfants de la catégorie de niveau supérieur, même sur ses pages enfants.
Comment puis-je accomplir cela? TIA.
Ok, essaye ça. Il doit capturer l’objet de catégorie actuel, puis remonter la chaîne jusqu’à ce qu’il trouve le plus grand ancêtre des catégories actuelles.
// get the category object for the current category
$thisCat = get_category( get_query_var( 'cat' ) );
// if not top-level, track it up the chain to find its ancestor
while ( intval($thisCat->parent) > 0 ) {
$thisCat = get_category ( $thisCat->parent );
}
//by now $thisCat will be the top-level category, proceed as before
$args=array(
'child_of' => $thisCat->term_id,
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC'
);
$categories=get_categories( $args );
foreach( $categories as $category ) {
echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>'; }
?>