WordPress:offsetパラメータを使用したWP-PageNaviの2ページが1ページ目と同じになるときの対処方法

最新記事のみ「ループ1」、2番目以降は「ループ2」で出力したい時があります。
このときにoffsetパラメータを使用するとWP-PageNaviが正しく動きません。

そこで、post__not_inパラメータを使用し、先頭記事をループ2から除外することにしました。

 

<ul class="blog_list  ">
  <?php 
  $first_id = get_the_ID(); //投稿の最初の記事ID
  $paged = get_query_var('paged') ? get_query_var('paged') : 1;
  $my_query = new WP_Query(array(
    'post_type' => 'post',
    'paged' => $paged,
    'posts_per_page' => 10,
    'post__not_in' => array($first_id),
    // 'offset' => 1,
  ));
  if($my_query->have_posts()): while($my_query->have_posts()): $my_query->the_post();
  ?>
  <li class="flex">
    <div class="left_box">
      <a href="<?php the_permalink(); ?>">
        <img src="" alt="" >
      </a>
    </div>
    <div class="right_box">
      <a href="<?php the_permalink(); ?>">
        <p class="cat"><?php echo get_cat_name($cat->term_id); ?></p>
        <p class="date"><?php the_time('Y.m.d'); ?></p>
        <p class="ttl f_min"><?php echo mb_strimwidth(strip_tags(get_the_title()),0,70,'…'); ?></p>
        <p class="more"><img src="<?php echo _TEMPURL; ?>/images/blog/single_more.jpg" alt="MORE"></p>
      </a>
    </div>
  </li>
  <?php  endwhile;endif;   wp_reset_postdata(); ?>
</ul>
<div class="wp-pagenavi">
  <?php wp_pagenavi(array('query'=>$my_query)); ?>
</div>

 

このソースでoffsetパラメータを使わずに一つ目の記事を除外してループを回すことができます。


参考サイト:
http://satohmsys.info/post-1117/

 

WP-PageNaviが正しく動かないときの確認事項をまとめられたサイトになります。

一度確認してみると参考になると思います。

ページネーション(ページャー)が動かない!!wordPressの意外な落とし穴

category cloud