PageNaviを特定のカテゴリやアーカイブでページ遷移をしても1ページ目が表示される場合の問題を解決するためのメモ

WordPress

WordPressでPageNaviを使用した際につまづいた点をメモ。

query_postsのcatでカテゴリIDを指定してカテゴリの記事一覧を取得している場合に、
アーカイブ(archive.php)やカテゴリーテンプレート(category.php)で
ページ送り(ページネーション)プラグイン「wp_pagenavi」を使用する場合
2ページ目以降も1ページ目と同じ記事が表示されてしまうことがあります。

そんな時は、query_postsの最後に$pagedを入れると正常に動作するようになります。

query_posts関数を使っている場合、そこにページ番号が入っていないと、常に1ページ目を取得しようとしてしまいます。

<?php $paged = get_query_var('paged'); ?>
<?php if (have_posts()) : query_posts( '$query_string&posts_per_page=20&category_name=news&paged='.$paged); ?>

<?php while ( have_posts() ) : the_post(); ?>
ループ内容
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>

<?php if(function_exists('wp_pagenavi')) { wp_pagenavi(); } ?>
<?php wp_reset_query();?>

posts_per_pageは投稿された記事の表示数
category_nameはカテゴリのスラッグ名

上記以外にもカテゴリIDやタグ名で絞り込むこともできます。
またタグの場合はtagやcatをquery_postの中の入れます。

例:tag=”特定の文字”
例:cat=-17,-21

みたいな感じです。

参考になれば幸いです。

コメント

タイトルとURLをコピーしました