【WordPress】WP-PageNaviが正常に動かないエラーの対処法
WordPressサイトを運営していると、ページネーションを実装するためによく使用されるプラグインの1つにWP-PageNaviがあります。しかし、時々ページネーションがうまく機能しないという問題に遭遇することがあります。
今回はこの問題の解決方法についての記事です。
目次
WP-PageNaviは、WordPressのウェブサイトにおいて、標準の「古い投稿」や「新しい投稿」のリンクの代わりに、より高度なページネーションを実装するためのプラグインです。このプラグインを使用すると、ユーザーはウェブサイト内でページ番号を直接クリックして、見たいページに素早くアクセスできるようになります。
WP-PageNaviを取り入れると、ウェブサイトのユーザビリティを向上させることになり、利用者のサイト内での滞在時間やページビューを増加させる効果が期待できます。
使い方は、テーマファイルに下記コードを記述するだけなので簡単です。こちらのコードは記事を表示するループの下に追加することが多いです。
<?php if (function_exists('wp_pagenavi')) {
wp_pagenavi();
} ?>
WP-PageNaviの設定は、プラグインが有効化されていれば「設定」>「PageNavi」からカスタマイズすることができます。
WP-PageNaviは非常に便利なのですが、「2ページ目が出ない」「表示されない記事がある」といったエラーが発生する場合があります。
そういった場合は下記項目を確認してみてください。
まずは以下を確認します。
- 投稿の表示用ループに‘posts_per_page’を設定しているか
- 投稿の表示用ループに‘paged’ => $pagedを設定しているか
- ‘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ページ目が表示されないエラーに対処する方法でした。
ぜひお試しください!
![アバター画像](https://groworks.jp/wp-content/uploads/2024/03/cropped-cropped-AdobeStock_511262491-scaled-1-55x55.jpeg)
r.s
グローワークスのコーダー兼プログラマー。最適なコードでサイトを動かすことに情熱を注いでいます。技術的課題を解決するのが得意です。