web-dev-qa-db-fra.com

Comment afficher les catégories enfants de la catégorie parente de la catégorie actuelle?

J'essaie d'afficher une liste de catégories dans un widget de texte activé par PHP. Sur les pages de catégories enfants, je dois obtenir l'ID de la catégorie parente de la catégorie actuelle, puis l'utiliser pour renvoyer une liste de toutes les catégories d'enfants de cette catégorie, à l'exception de la catégorie actuelle.

J'ai essayé le code suivant mais ça ne marche pas:

<?php if (is_category( )) {

$thiscat = get_category( get_query_var( 'cat' ) );
$catid = $thiscat->cat_ID;
$parent = $catid->category_parent;

$catlist = get_categories(
        array(
        'child_of' => $parent,
        'orderby' => 'id',
        'order' => 'DESC',
        'exclude' => $catid,
        'hide_empty' => '0'
        ) );
} ?>

Cela affiche à la fois les catégories parent et les catégories enfants.

2
jrcollins

Je réalise maintenant qu'il existe un moyen plus simple de procéder:

<?php   if (is_category( )) {

        $thiscat = get_category( get_query_var( 'cat' ) );
        $catid = $thiscat->cat_ID;
        $parent = $thiscat->category_parent;

        if (!empty ($parent) ) {
        //child category pages

        $catlist = get_categories(
        array(
        'child_of' => $parent,
        'orderby' => 'id',
        'order' => 'DESC',
        'exclude' => $catid,
        'hide_empty' => '0'
        ) );
}
} ?>
2
jrcollins

Cela semble fonctionner:

<?php if (is_category( )) {

$thiscat = get_category( get_query_var( 'cat' ) );
$catid = $thiscat->cat_ID;
//create array from get_category_parents
$parent_list = (explode (',',get_category_parents($catid,false,',')));
$parent_name = ($parent_list[0]);
$parent = get_cat_ID( $parent_name );

$catlist = get_categories(
        array(
        'child_of' => $parent,
        'orderby' => 'id',
        'order' => 'DESC',
        'exclude' => $catid,
        'hide_empty' => '0'
        ) );
        //check if current category is parent category
        if ( $catid == $parent ) {
        echo '<span>this is a parent category page</span>';
        }
        else {
        echo '<span>this is a child category page</span>';
        }
}
?>
0
jrcollins