web-dev-qa-db-fra.com

Comment puis-je afficher le contenu des sous-catégories sur la page de catégorie parente?

J'ai un site Web WordPress qui a une catégorie avec deux sous-catégories.

Maintenant, comment est-il possible d'afficher le contenu (les éléments/contenu de sous-catégories) sur la catégorie parente?

2
Bagger

Une possibilité:

<?php 
    $sub_cats = get_categories('parent=' . get_query_var('cat'));
    if( $sub_cats ) :
        foreach( $sub_cats as $sub_cat ) :
            $sub_query = new WP_Query( array(
                'category__in' => array( $sub_cat->term_id ),
                'posts_per_page' => -1)
            );
            if ( $sub_query->have_posts() ) :
                while( $sub_query->have_posts() ) : $sub_query->the_post();
                    //your output//
                endwhile;
            endif;
        endforeach;
    endif;
?>

http://codex.wordpress.org/Function_Reference/get_categorieshttp://codex.wordpress.org/Class_Reference/WP_Query

2
Michael
$cat = get_query_var( 'cat' );
$args = array(
    'post_status' => 'publish',
    'tax_query'   => array(
        array(
            'taxonomy' => 'category', //may be categories, I never remember, try both
            'field'    => 'slug', //may need to use ID, depends on output
            'terms'    => $cat
            //children are included by default
        )
    )
);
$posts = new WP_Query( $args );

Cela vous donnera un tableau d'objets post. Vous pouvez utiliser setup_postdata() pour insérer cela dans une boucle si vous le souhaitez. Ce code sera extensible si vous ajoutez des sous-catégories, ils seront également interrogés.

Docs: WP_Query , setup_postdata()

mettre à jour

<?php
$cat = get_query_var( 'cat' );
$args = array(
    'post_status' => 'publish',
    'tax_query'   => array(
        array(
            'taxonomy' => 'category', //may be categories, I never remember, try both
            'field'    => 'id', //may need to use slug, depends on output
            'terms'    => $cat
            //children are included by default
        )
    )
);  
$my_posts = new WP_Query( $args );
?>

<?php if ( $my_posts->have_posts()) : while ( $my_posts->have_posts() ) : $my_posts->the_post(); ?>     
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <div class="entryCategory">              
            <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_post_thumbnail( 'thumbnail', array( 'class' => 'alignright' ) ); ?></a>
        </div>
1
mor7ifer