サポート » 使い方全般 » マルチループ時の1ページの表示数およびページ送りについて

  • カテゴリーページやタグページにおいて、「先頭に固定表示」を疑似的に実装する目的で、
    2つのループをあたかも一つのループであるかのように見せかけています。

    一つ目のループ(Aループ)でsticky_postsのみを出力し、二つ目のループ(Bループ)でsticky_postsを除外した投稿を出力しています。

    <?php
    /*Aループ*/
    if((is_category() || is_tag()) && get_option('sticky_posts')){
    	$StickyPosts = array('posts_per_page' => -1, 'post__in' => get_option('sticky_posts'), 'ignore_sticky_posts' => 0);
    	$StickyQuery = new WP_Query($StickyPosts);
    	if ($StickyQuery->have_posts()) {
    		while ($StickyQuery->have_posts()): $StickyQuery->the_post();
    			loop_content();
    		endwhile;
    	}
    	wp_reset_postdata();
    
    /*Bループ*/
    	$IgnoreStickyPosts = array('post__not_in' => get_option('sticky_posts'), 'ignore_sticky_posts' => 1);
    	$args = array_merge($wp_query->query, $IgnoreStickyPosts);
    	query_posts($args);
    
    	if(have_posts()){
    		while (have_posts()) : the_post();
    			loop_content();
    		endwhile;
    	}
    }
    ?>

    Aループの件数は今後増減する可能性があるものとします。

    このような「1つに見せかけたループ」で、「Aループ+Bループ合わせて10件」でページ送りが発生するようにしたいのですが、そういったことは可能でしょうか。
    アドバイスを頂ければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    Bループの $IgnoreStickyPosts に、

    'posts_per_page' => 10 - count( get_option( 'sticky_posts', array() ) )

    を追加で。

    2ページ目も Aループを表示してよいのであれば、これで問題ありませんが、2ページ目以降は表示しないとなると、2ページ目以降でBループの表示件数が変わるため、最大ページ数が変わってしまい、ページナビなどのプラグインを用いた場合、影響がでる可能性があります。

    トピック投稿者 HASA14

    (@hasa14)

    >jim912さん
    早速のご回答ありがとうございます。
    申し訳ありません、記載し忘れていましたが「Aループは1ページ目のみ表示」という仕様で考えています。やはり難しいでしょうか…。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「マルチループ時の1ページの表示数およびページ送りについて」には新たに返信することはできません。