web-dev-qa-db-ja.com

さまざまなカテゴリやカスタム投稿タイプからの投稿を表示する

メインページに、3つのカテゴリからの投稿と1つのカスタム投稿タイプを表示します。

1つのpre_get_posts関数にまとめる方法はありますか?または、CPT用に1回、特定のカテゴリの投稿用に1回、個別にクエリする必要がありますか。

1
Lea Cohen

カテゴリaからの投稿、カテゴリbからの投稿、別のフォームカテゴリcからの投稿、そして最後にカスタム投稿の種類 - のそれぞれが別々のクエリである必要があります。

これらを「二次的な問い合わせ」と考えてください - (一次的な問い合わせはあなたをホームページに載せるものです)。それで、あなたはWP_Queryの別々のインスタンスを使いたいでしょう(これを参照してください 関連記事 )。

例えば。

$post_from_cat_a  = new WP_Query(array( 
    'category__name' => array('a'), 
    'posts_per_page'=> 1
));
if( $post_from_cat_a->have_posts() ){
    while( $post_from_cat_a->have_posts() ): $post_from_cat_a->the_post();
         //Display output here
    endwhile;
}

$post_from_cat_b  = new WP_Query(array( 
    'category__name' => array('b'), 
    'posts_per_page'=> 1
));
if( $post_from_cat_b->have_posts() ){
  ...
  ...

最後にwp_reset_postdata();を呼び出すことを忘れないでください。

1
Stephen Harris