Codeworks Notes

 2020-09-07

Wordpress
フロントエンド
プログラミング

一覧の2ページ目以降が1ページ目と同じ内容になる

概要

記事一覧ページにおいて、ページネーション (ページャー )で 2 ページ目以降を表示しても 1 ページ目と同じ内容が表示される場合のトラブルシューティング。

原因

2ページ目以降の出力時に現在のページ数が取得されていないため。

要点

この現象はサブループを用いて記事を取得したときに起こるもので、メインループから取得したページネーションだと 2 ページ目が正常に表示されます。

対処方法

まずは通常のサブループを組むときは、だいたいこうなる。

$args = array(
	'post_type' => 'post'
	'posts_per_page' => 10,
	'order' => 'DESC',
);

そこに get_query_var() を使って現在のページ数を取得させ、$paged に代入するようにする( 1 行目、6 行目)。
こう書くことでループの中で自分自身が何ページ目かが把握できるようになる。

$paged = get_query_var('paged') ? get_query_var('paged') : 1 ;
$args = array(
	'post_type' => 'post'
	'posts_per_page' => 10,
	'order' => 'DESC',
	'paged' => $paged
);

こうすれば直る。
メインループのテンプレートを複製してサブループで作ろうとすると陥りやすいので注意。