Published
- 3 min read
wordpressのページネーションのリンクが404になってしまう

結論
WPの管理画面で設定している記事の表示件数が一覧ページの表示件数になっていたからだった。
functions.php
でカスタム投稿タイプやカスタムタクソノミーごとに1ページに表示する件数をactionsで上書き指定してあげることが必要だった。
参考サイト:WordPressのカスタム投稿タイプの2ページ目が404になる
状況
カスタム投稿タイプの一覧ページにページネーションを追加することになった。 一覧ページで試しに3件を表示させ、ページネーションを設定・表示確認を行ったが3ページ以降のリンクが404になってしまっていた。 ただし2ページ目まではパーマリンクが作られていた。
解決方法
WP管理画面での表示件数が10件で、記事数が20件だったため3ページ以降のパーマリンクが作られずに404になってしまっていたことが原因だった。
下記のコードを functions.php
に追加した。
一覧ページでは記事はコード内のCUSTOM_POSTS_PER_PAGEと同じ件数の3件を表示させるようにしており、この設定を追加したところパーマリンクも生成されページネーションが問題なく動作した。
<?php
const CUSTOM_POSTS_PER_PAGE = 3; // 1ページに表示させたい記事の件数
function change_posts_per_page($query) {
// 管理画面上ではなにもしない
if ( is_admin() || !$query->is_main_query() ) {
return;
}
// 指定したカスタム投稿タイプ・カスタムタクソノミーの表示件数を指定
if ( $query->is_archive( 'news' ) || is_tax('news_category') ) {
$query->set( 'posts_per_page', CUSTOM_POSTS_PER_PAGE );
}
}
add_action( 'pre_get_posts', 'change_posts_per_page' );
上記のコードは、 参考サイト:WordPressのカスタム投稿タイプの2ページ目が404になるの内容を拝借
wordpressまだまだ使いこなせないし、一つのことを色々な方法で設定できたりするから見るとこも多くて大変だ。 ここで2hくらい詰まってしまったので、次は忘れないようにしたい。