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