web-dev-qa-db-fra.com

Comment afficher les sous-catégories dans les catégories sinon afficher les messages

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.

6
Dima Skvarskyi

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
        */

    }
}
1
Andy Macaulay-Brook
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.
}
0
Tanvir Ahmed Shaon
<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>
0
tayyab islam