WP-PageNaviの2ページ目以降で起こる404エラーの回避方法
Error 404 Visual Placeholder
WordPressを使っていると、ページネーションプラグイン「WP-PageNavi」を導入した際に、2ページ目へ遷移しようとした途端に「404 Not Found」が表示される問題に遭遇することがあります。
原因:WordPressのパーマリンク設定とループの競合
このエラーは、独自にWP_Queryを使用して記事一覧を表示しているテンプレートで、WordPressのメインループとWP-PageNaviが正しく連携できていないことが原因です。
解決方法
以下のコードをループの直前に追加し、ページ番号を取得できるように修正します。
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'paged' => $paged,
);
$my_query = new WP_Query( $args );
$args = array(
'post_type' => 'post',
'paged' => $paged,
);
$my_query = new WP_Query( $args );
そして、WP-PageNaviを呼び出す際に、作成したクエリを引数として渡します。
wp_pagenavi( array( 'query' => $my_query ) );
注意:もし上記を行っても解決しない場合は、パーマリンク設定の更新を一度行ってください。管理画面の「設定」>「パーマリンク設定」を開き、そのまま「変更を保存」ボタンを押すことでリライトルールが再生成されます。