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
みたいな感じです。
参考になれば幸いです。
コメント