WordPressのカスタム投稿を使用し、一覧ページにページャープラグイン(wp_pagenavi)を設置したときに上手くページャーが動作しないことがあります。表示されるエラーやページャーをクリックしたときの動作によって対処方法が異なりますので、ご自身の状況にあった対策を行ってみてください。
wp_pagenaviで発生する不具合一覧
wp_pagenaviを使用したときによく発生する不具合とその原因には下記のようなものがあります。
- ページやページャーが表示されない
→WP_Queryでページの指定やカスタム投稿タイプ名の指定が抜けている - 2ページ目以降が404ページに遷移する
→カスタム投稿タイプ(post_type)と、固定ページのスラッグが同じ名前になっている
→パーマリンクの設定間違い、設定の更新
上記のような不具合が発生したときの対処方法を順番に説明していきます。
ページやページャーが表示されない
この不具合が発生したときの原因の一つに、カスタム投稿のループの記述が間違っている場合が考えられます。
ループの記述は下記のようになっているかご自身のものと比べてみてください。
<ul>
<?php
$paged = get_query_var('paged')? get_query_var('paged') : 1;
$args = array(
'paged' => $paged,
'post_type' => 'カスタム投稿タイプ名',
'posts_per_page' => 4,
'post_status' => 'publish'
);
$myposts = new WP_Query($args);
if($myposts->have_posts()):while($myposts->have_posts()): $myposts->the_post();
?>
<li> <!--ループさせる投稿一覧--> </li>
<?php endwhile; endif; ?>
</ul>
<div class="pager">
<?php
wp_pagenavi( array('query' => $myposts));
?>
</div>
「WP_Query」内の「paged」は現在のページ取得、「post_type」は表示させるカスタム投稿を選択、「posts_per_page」はページごとに表示させる投稿の数になります。
特に、「posts_per_page」は、独自の設定やプラグインを入れていない場合、WordPress管理画面の「設定」→「表示設定」→「1ページに表示する最大投稿数」と同じ数になるように設定してください。
2ページ目以降が404ページに遷移する
URLが正しく「https://○○○○.com/news/page/2/」等のように表示されていても、ページは404エラーページやリダイレクト設定したページに遷移してしまうことがあります。このようなときは下記の設定を見直してみてください。
パーマリンクの設定を確認
WordPressの管理画面から「設定」→「パーマリンク」の順にクリックし、パーマリンク設定を開きます。パーマリンク設定を特に変更せずそのまま更新してください。これで設定が上書きされます。これでも特にエラーが改善されない場合は次項の設定を確認してください。
固定ページのスラッグを確認
固定ページのカスタム投稿用に作成した固定ページを開きます。固定ページ右側のオプション項目から上部の「投稿」タブをクリックし、「リンク」または「パーマリンク」と表示されている項目をクリックします。これがカスタム投稿タイプ(post_type)と同じ場合、うまくページャーが動作しなくなります。
この原因は、固定ページのURLとカスタム投稿のスラッグが競合し、WordPressのリライトの構造上固定ページのスラッグを優先して表示させるため、カスタム投稿内容が読み込まれず、このようなエラーが発生します。
カスタム投稿タイプ名が「works」等の場合は、固定ページを「works-list」等に変えることでエラーが発生しなくなり、ページャーが問題なく動作するようになると思います。