プラグイン「WP-PageNavi」で同じ内容が表示される

ページャーを簡単に表示できるWordopressのプラグイン「WP-PageNavi」でつまづきましたのでメモとして残します。

WP-PageNavi

ページは遷移しているのに同じ内容が表示される

「WP-PageNavi」をインストールしてarchive.phpやcategory.phpにページャーを表示するphpコード「<?php wp_pagenavi(); ?>」を記述して動かしてみたのですが…。

ページャーは正常に表示され、クリックしてみるとURLも「category/blog/」「category/blog/page/2/」「category/blog/page/3/」…と順調に遷移しているのに、どのページでも表示される内容が最新の10件と変わらず、古い記事が一向に表示されません。

原因は表示カテゴリーと表示数を指定していたため

記事一覧を書き出すためのphpコードをこのように書いていたのが原因でした。

<?php
$posts = get_posts(‘numberposts=10’);
global $post;
?>
<?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
・・・
<?php endforeach; endif;?>

<?php
$posts = get_posts(‘numberposts=10&category=3’);
global $post;
?>
<?php if($posts): foreach($posts as $post): setup_postdata($post); ?>
・・・
<?php endforeach; endif;?>

これを両方とも以下のように修正しました。とてもスッキリしました!

<?php if(have_posts()): while(have_posts()):the_post(); ?>
・・・
<?php endwhile; endif; ?>

「get_posts(‘numberposts=10’);」や「get_posts(‘numberposts=10&category=3’);」といったカテゴリや表示数の指定を行うと、ページャーが他のページに移った時もこの指示を読み込んでしまい最新の一覧が生成されてしまうので、ページは遷移しているの同じ内容が表示される現象が起こるようです。

また、特定カテゴリーのアーカイブを作成するときは、どうしても必要な時以外はコードで指定せずファイル名の指定の方がスマートです。