WordPress

【WordPress】WP-PageNaviが正常に動かないエラーの対処法

WordPressサイトを運営していると、ページネーションを実装するためによく使用されるプラグインの1つにWP-PageNaviがあります。しかし、時々ページネーションがうまく機能しないという問題に遭遇することがあります。
今回はこの問題の解決方法についての記事です。

WP-PageNaviとは?

WP-PageNaviは、WordPressのウェブサイトにおいて、標準の「古い投稿」や「新しい投稿」のリンクの代わりに、より高度なページネーションを実装するためのプラグインです。このプラグインを使用すると、ユーザーはウェブサイト内でページ番号を直接クリックして、見たいページに素早くアクセスできるようになります。
WP-PageNaviを取り入れると、ウェブサイトのユーザビリティを向上させることになり、利用者のサイト内での滞在時間やページビューを増加させる効果が期待できます。
使い方は、テーマファイルに下記コードを記述するだけなので簡単です。こちらのコードは記事を表示するループの下に追加することが多いです。

<?php if (function_exists('wp_pagenavi')) {
    wp_pagenavi();
} ?>

WP-PageNaviの設定は、プラグインが有効化されていれば「設定」>「PageNavi」からカスタマイズすることができます。

WP-PageNaviのエラー

WP-PageNaviは非常に便利なのですが、「2ページ目が出ない」「表示されない記事がある」といったエラーが発生する場合があります。
そういった場合は下記項目を確認してみてください。

WP-PageNaviエラー対処法

まずは以下を確認します。

  1. 投稿の表示用ループに‘posts_per_page’を設定しているか
  2. 投稿の表示用ループに‘paged’ => $pagedを設定しているか
  3. ‘posts_per_page’と、管理メニューの「設定」>「表示設定」からカスタマイズできる「1ページに表示する最大投稿数」の数値は一致してるか

wp_queryで通常の投稿を表示するためのコードと共に説明します。

<?php
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$args = array(
    'posts_per_page' => 10, // ここを「1ページに表示する最大投稿数」と一致させる
    'paged' => $paged, // 一行目の$paged = get_query_var...も忘れずに書く
);
$my_query = new WP_Query($args); ?>
<?php if (have_posts()) : ?>
    <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
        <!-- ループ内コンテンツ -->
    <?php endwhile; ?>
    <?php if (function_exists('wp_pagenavi')) {
        wp_pagenavi();
    } ?>
<?php endif; ?>

これだけで問題が解決する場合が多いかもしれません。まずは自分の書いたコードがどうなっていたか確認し、調整してみましょう。

通常の投稿とカスタム投稿の表示件数が異なる場合

通常の投稿とカスタム投稿で表示件数が違う場合もあります。その場合はfunctions.phpに記述を追加し、「特定のカスタム投稿ならば1ページに表示する最大投稿数」を指定してあげましょう。
追加する記述はこちらです。
※functions.phpを編集する際は必ずバックアップをとってください。

<?php
/**
* カスタム投稿タイプの表示件数を変更
*/
function change_posts_per_page($query) {
    // 管理画面での表示件数は変更する必要がなれればreturn;まで入れる
    if (is_admin() || !$query->is_main_query())
        return;
    //カスタム投稿タイプexampleのアーカイブページかタクソノミーexample_catの一覧ページならば
    if ($query->is_post_type_archive('example') || $query->is_tax('example_cat')) {
        $query->set('posts_per_page', 20); // posts_per_pageを20に設定
    }
}
add_action('pre_get_posts', 'change_posts_per_page');

上記コードで「特定のカスタム投稿ならば1ページに表示する最大投稿数」を設定できました。カスタム投稿のwp_queryには’posts_per_page’ => 20,と忘れず追加してください。
これでWP-PageNaviは正常に動くはずです。

WP_Queryを使用している場合

WP_Queryを使用している場合は、WP-pagenaviを呼び出すコード内にWP_Queryに使用した変数を入力すると正常に表示される場合があります。

<?php if(function_exists('wp_pagenavi')){
    wp_pagenavi(array('query'=>$my_query)); //$my_queryがWP_Queryに使用した変数
}?>

まとめ

これらの手順を試せば、WP-PageNaviを正常に動作させることができるはずです。
もしも問題が解決しなかった場合は、WP-PageNaviは人気のプラグインなのでWordPressコミュニティやサポートフォーラムで質問を投稿し、支援を求めることもできます。

以上が、WP-PageNaviを使用して2ページ目が表示されないエラーに対処する方法でした。
ぜひお試しください!

アバター画像

r.s

グローワークスのコーダー兼プログラマー。最適なコードでサイトを動かすことに情熱を注いでいます。技術的課題を解決するのが得意です。