web-dev-qa-db-ja.com

ページ上の特定のカテゴリからのすべての投稿を表示する

特定のカテゴリからのすべての投稿を単一のページに表示したい。そのため、私は私のテーマフォルダのpage.phpファイルを編集しました。現在表示されているページを確認し、次のカテゴリからすべての投稿を読み込むための 'if-clause'を追加しました。

<?php get_header(); ?>

<div id="primary">
    <div id="content" role="main">

<?php
    if (is_page(26)) {
        query_posts('cat=2,6,9,13&showposts=-1&orderby=date');    
        if (have_posts()) : 
            while (have_posts()) : 
                the_post(); 
                get_template_part( 'content', 'page' );
            endwhile; 
        endif;  
    } else {
        while ( have_posts() ) : 
            the_post(); 
            get_template_part( 'content', 'page' ); 
        endwhile; // end of the loop. 
    }
?>

    </div><!-- #content -->
</div><!-- #primary -->

<?php get_footer(); ?>

しかし26ページをロードしても何も表示されません。

5
mybecks

カテゴリの引数を配列に追加することをお勧めします。そしてquery_postsを使わないでください。 showpostsも非推奨です。代わりにposts_per_pageを使用してください。

$args = array (
    'cat' => array(2,6,9,13),
    'posts_per_page' => -1, //showposts is deprecated
    'orderby' => 'date' //You can specify more filters to get the data 
);

$cat_posts = new WP_query($args);

if ($cat_posts->have_posts()) : while ($cat_posts->have_posts()) : $cat_posts->the_post();
        get_template_part( 'content', 'page' );
endwhile; endif;
7
janw

これはまだquery_posts()を使っているために起こります。 やめなさい。 代わりにWP_Queryを使用してください。

$extra_posts = new WP_Query( 'cat=2,6,9,13&showposts=-1&orderby=date' );
if ( $extra_posts->have_posts() )
{
    while( $extra_posts->have_posts() )
    {
        $extra_posts->the_post();
        get_template_part( 'content', 'page' );
    }
    wp_reset_postdata();
}
1
fuxia