WP-PageNavi

説明

既存の ← 過去の投稿 | 新しい投稿 → というリンクをページヘのリンクで置き換えたい、という方へ。

このプラグインは、わかりやすいページ送り機能を実装する wp_pagenavi() テンプレートタグを使えるようにします。

Much of the 2.x line was the work of scribu, whose write-ups on using it with secondary queries are still the ones the FAQ below points at. The plugin icon is by SimpleIcon from Flaticon.

寄付

私は自分の多くの時間をプラグインの作成、アップデート、メンテナンス、サポートに費やしています。もしこのプラグインを気に入って頂け、数ドルの寄付を惜しまないで頂けるのであれば、とてもありがたいです。そうでなくとも、このプラグインは無料で使用可能です。

使い方

使用しているテーマの next_posts_link() と previous_posts_link() という記述を探して置き換える必要があります。

Twentyten テーマではこのようになります:

<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>

これらの2行は以下のように置き換えてください :

<?php wp_pagenavi(); ?>

マルチパートページでは、次のようなコードを探してください :

<?php wp_link_pages( ... ); ?>

そして以下のように置き換えてください :

<?php wp_pagenavi( array( 'type' => 'multipart' ) ); ?>

設定は ダッシュボード -> 設定 -> PageNavi をご覧ください。

CSS の変更

If you need to configure the CSS style of WP-PageNavi, you can copy the css/wp-pagenavi.css file from the plugin directory into your theme’s directory as wp-pagenavi.css and make your modifications there. This way, you won’t lose your changes when you update the plugin.

The stylesheet sets no font and no text colour, so it inherits both from your theme, and its two border colours are CSS custom properties. A small change needs no copy of the file at all:

.wp-pagenavi {
    --wp-pagenavi-border-color: #d0d0d0;
    --wp-pagenavi-border-color-current: rebeccapurple;
}

Alternatively, you can set “Use wp-pagenavi.css” to No on the settings page and add the styles to your theme’s style.css file directly.

クラス名の変更

There are filters that can be used to change the default class names that are assigned to page navigation elements.

フィルター

  • wp_pagenavi_class_pages
  • wp_pagenavi_class_first
  • wp_pagenavi_class_previouspostslink
  • wp_pagenavi_class_extend
  • wp_pagenavi_class_smaller
  • wp_pagenavi_class_page
  • wp_pagenavi_class_current
  • wp_pagenavi_class_larger
  • wp_pagenavi_class_nextpostslink
  • wp_pagenavi_class_last

フィルターの使い方

// Simple Usage - 1 callback per filter
add_filter('wp_pagenavi_class_previouspostslink', 'theme_pagination_previouspostslink_class');
add_filter('wp_pagenavi_class_nextpostslink', 'theme_pagination_nextpostslink_class');
add_filter('wp_pagenavi_class_page', 'theme_pagination_page_class');

function theme_pagination_previouspostslink_class($class_name) {
  return 'pagination__control-link pagination__control-link--previous';
}

function theme_pagination_nextpostslink_class($class_name) {
  return 'pagination__control-link pagination__control-link--next';
}

function theme_pagination_page_class($class_name) {
  return 'pagination__current-page';
}


// More Concise Usage - 1 callback for all filters
add_filter('wp_pagenavi_class_previouspostslink', 'theme_pagination_class');
add_filter('wp_pagenavi_class_nextpostslink', 'theme_pagination_class');
add_filter('wp_pagenavi_class_page', 'theme_pagination_class');

function theme_pagination_class($class_name) {
  switch($class_name) {
    case 'previouspostslink':
      $class_name = 'pagination__control-link pagination__control-link--previous';
      break;
    case 'nextpostslink':
      $class_name = 'pagination__control-link pagination__control-link--next';
      break;
    case 'page':
      $class_name = 'pagination__current'
      break;
  }
  return $class_name;
}

スクリーンショット

インストール

  1. Install and activate the plugin.
  2. In your theme, replace the calls to next_posts_link() and previous_posts_link() with wp_pagenavi(). Usage below shows what that looks like in a stock theme.
  3. Go to WP-Admin -> Settings -> PageNavi to change the wording and the number of page links.

FAQ

2 ページ目に行っても、1 ページ目と同じ投稿が表示されてしまいます。

You’re using query_posts() wrong. See The Right Way To use query_posts()

PageNavi は別の WP_Query インスタンスで動作しますか ?

Yes; read this tutorial

どうすれば設定ページの内容を無視できますか?

多言語プラグインを使っている場合など、設定ページの文字列を無視したくなることもあるでしょう。

このようにします :

<?php wp_pagenavi( array( 'options' => WP_PageNavi_Options::defaults() ) ); ?>

Before 3.0.0 this was written as PageNavi_Core::$options->get_defaults(). That property was backed by the bundled SCB framework, which 3.0.0 removes, so the old form no longer works and must be updated.

Can I use an SVG arrow for the previous and next links?

Yes. The navigation text settings accept the inline SVG elements as well as everything wp_kses_post() allows, so an icon typed into the settings screen survives the save. That allow-list is the wp_pagenavi_allowed_html filter if you need to widen or narrow it.

評価

2023年8月17日
Simples e totalmente funcional. Resolvendo o problema de paginação com extrema facilidade. Parabéns aos devs.
2022年11月22日
I am using this plugin + Divi. It works just fine, but there is a bug with the slugs of the pages and the post types. If you have, for example, a post type with the slug "speakers" and your page is also call "speakers", both slugs will be the same and this is causing the plugin to break. Most people on the internet are looking for this error as the page/2 error. Be sure the slugs does not match and it will work just fine.
149件のレビューをすべて表示

貢献者と開発者

WP-PageNavi はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“WP-PageNavi” は53ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“WP-PageNavi” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。

変更履歴

3.0.1

  • CHANGED: The settings migration now runs early on every request instead of only when wp-admin is loaded, so a site whose dashboard is never opened still picks up its settings after an update
  • FIXED: Network-activating the plugin upgraded only the site the click happened on. Every other site on the network kept serving its front end with the default settings — its real, pre-3.0.0 settings sat unread until somebody opened that site’s wp-admin, which also means nothing was lost and any site that looked wrong has already healed itself. Activation now walks every site on the network

3.0.0

  • BREAKING: WP-PageNavi now requires WordPress 6.8 and PHP 8.2. A site running anything older will not be offered the update
  • BREAKING: The settings are stored in wp_pagenavi_options instead of pagenavi_options. The old row is copied over and removed automatically
  • BREAKING: The settings screen has moved from options-general.php?page=pagenavi to options-general.php?page=wp-pagenavi
  • BREAKING: pagenavi-css.css is now css/wp-pagenavi.css, and a copy in your theme directory must be renamed to wp-pagenavi.css to keep overriding it
  • BREAKING: Every class is now prefixed. PageNavi_Options, PageNavi_Call and PageNavi_Core are WP_PageNavi_Options, WP_PageNavi_Call and WP_PageNavi_Core, and PageNavi_Admin is now WP_PageNavi_Settings
  • BREAKING: PageNavi_Core::$options has been removed. Use WP_PageNavi_Options::defaults() and WP_PageNavi_Options::get() instead. See the FAQ
  • BREAKING: PageNavi_Options_Page has been removed and replaced by WP_PageNavi_Settings
  • BREAKING: Dropping the SCB Framework also removes the global functions and scb* classes it defined, since they were loaded into WordPress by whichever plugin bundled it. If your theme or another plugin called html(), html_link(), set_post_field(), scb_init(), scb_register_table(), scb_install_table(), scb_uninstall_table(), scb_admin_notice(), scb_get_query_flags(), scb_list_fold() or scb_list_group_by(), it must now provide them itself. Note that another installed plugin may still be supplying them, so the breakage will only appear once nothing else on the site bundles SCB
  • NEW: Removed the bundled WP SCB Framework. The plugin now runs entirely on WordPress core APIs and has no dependencies
  • NEW: The settings page is built with the WordPress Settings API
  • NEW: Restructured into includes/ following the Plugin Handbook layout
  • NEW: A wp_pagenavi_capability filter over the capability the settings screen requires
  • NEW: A wp_pagenavi_version row holding the plugin and schema version markers, so a future upgrade has something to compare against
  • CHANGED: The stylesheet’s two colours are CSS custom properties with fallbacks rather than hardcoded hexes, and it now carries a dark colour scheme
  • CHANGED: The stylesheet uses no physical CSS properties, so one file serves left-to-right and right-to-left sites alike
  • FIXED: An inline SVG arrow no longer deletes the entire previous/next link. wp_kses_post() removes an SVG rather than cleaning it, which left the link text empty, and a link with empty text is dropped altogether. The navigation text is now filtered against wp_kses_post()‘s list plus the inline SVG elements, exposed as the wp_pagenavi_allowed_html filter. Reported by Cal at toolshed (#73)
  • FIXED: Multisite uninstall no longer stops at the hundredth site, so a large network has its options removed everywhere. Reported by Cal at toolshed (#73)
  • FIXED: The navigation aria-labels now match the strings WordPress core defines, so they are translated in every locale core supports. Reported by Cal at toolshed (#73)
  • FIXED: An array submitted where a text setting belongs no longer raises a PHP 8 notice, and option keys the plugin does not define are no longer stored. Reported by Cal at toolshed (#73)
  • FIXED: Page links are escaped with esc_url() instead of esc_attr()
  • FIXED: Page numbers derived from a WP_User_Query are cast to integers, so the current page is marked correctly
  • FIXED: The stylesheet version now tracks the plugin version instead of being pinned to 2.70
  • FIXED: The label on each Yes/No setting pointed at an element that did not exist, so clicking it did nothing
  • NOTE: No hook and no template tag is renamed. The ten wp_pagenavi_class_* filters, the wp_pagenavi filter, wp_pagenavi() and wp_pagenavi_dropdown() all keep the names they shipped with