J'ai une hiérarchie comme celle-ci: Catégorie1 -Sous-catégorie1 -Sous-catégorie2 - Poste1 Catégorie2 -Sous-catégorie1
J'ai besoin d'afficher le nom et la description des sous-catégories lorsque je passe à la catégorie //// J'utilise maintenant ce code:
<?php if (is_category()) {
$this_category = get_category($cat);
if (get_category_children($this_category->cat_ID) != "") {
echo '<div id="catlist"><ul>';
$childcategories = get_categories(array(
'orderyby' => 'name',
'hide_empty' => false,
'child_of' => $this_category->cat_ID
));
foreach($childcategories as $category) {
echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';
echo '<p>'.$category->description.'</p>';
}
echo '</ul></div>';
}
}
?>
Maintenant, j'ai la liste des sous-catégories lorsque vous cliquez sur la catégorie et la page blanche si je clique sur le lien de la sous-catégorie, mais je dois afficher les messages lorsque je clique sur la liste des sous-catégories.
Votre code recherche les catégories enfants et les indique s’il existe, mais vous ne devez pas traiter la boucle qui afficherait normalement les publications de la catégorie actuelle.
Vous voulez étendre votre code pour être de la forme:
if ( is_category() ) {
$this_category = get_category($cat);
if ( get_category_children( $this_category->cat_ID ) != "" ) {
// display the list of child categories as you currently do
} else {
/* run the standard loop to show the posts using
whatever loop code your other templates use
*/
}
}
if (is_category()){
$category = get_queried_object();
$subcategories = get_category_children( $category->term_id );
// var_dump($subcategories);
if ( $subcategories != "" ) {
echo '<div id="catlist"><ul>';
$childcategories = get_categories(array(
'orderyby' => 'name',
'hide_empty' => false,
'child_of' => $category->term_id,
));
foreach( $childcategories as $single ) {
echo '<a href="' . get_category_link( $single->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $single->name ) . '" ' . '>' . $single->name.'</a>';
echo '<p>'.$single->description.'</p>';
}
echo '</ul></div>';
} else {
// your loop.
}
<div id="content" role="main">
<?php if (is_category()) {
$this_category = get_category($cat);
if (get_category_children($this_category->cat_ID) != "") {
echo '<div id="catlist"><ul>';
$childcategories = get_categories(array(
'orderyby' => 'name',
'hide_empty' => false,
'child_of' => $this_category->cat_ID
));
foreach($childcategories as $category) {
echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';
echo '<p>'.$category->description.'</p>';
} echo '</ul></div>';
}
else{
get_template_part('loop-header');
if (have_posts()) :
get_template_part('loop-actions');
get_template_part('loop-content');
get_template_part('loop-nav');
else :
get_template_part('loop-error');
endif; }}?>
<?php
?>
</div>