Stars: 129
Forks: 49
Pull Requests: 35
Issues: 32
Watchers: 8
Last Updated: 2023-08-09 02:53:24
Adds a more advanced paging navigation interface to your WordPress blog.
License:
Languages: PHP, Shell, CSS
Contributors: GamerZ, scribu
Donate link: https://lesterchan.net/site/donation/
Tags: navigation, pagination, paging, pages
Requires at least: 3.2
Tested up to: 6.3
Stable tag: 2.94.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Adds a more advanced paging navigation interface.
Want to replace the old ← Older posts | Newer posts → links with some page links?
This plugin provides the wp_pagenavi()
template tag which generates fancy pagination links.
In your theme, you need to find calls to next_posts_link() and previous_posts_link() and replace them.
In the Twentyten theme, it looks like this:
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyten' ) ); ?></div>
<div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyten' ) ); ?></div>
You would replace those two lines with this:
<?php wp_pagenavi(); ?>
For multipart pages, you would look for code like this:
<?php wp_link_pages( ... ); ?>
and replace it with this:
<?php wp_pagenavi( array( 'type' => 'multipart' ) ); ?>
Go to WP-Admin -> Settings -> PageNavi for configuration.
If you need to configure the CSS style of WP-PageNavi, you can copy the pagenavi-css.css
file from the plugin directory to your theme's directory and make your modifications there. This way, you won't lose your changes when you update the plugin.
Alternatively, you can uncheck the "Use pagenavi.css?" option from 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;
}
I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.
Make sure your host is running PHP 5. The only foolproof way to do this is to add this line to wp-config.php (after the opening <?php
tag):
var_dump(PHP_VERSION);
You're using query_posts()
wrong. See The Right Way To use query_posts()
Yes; read this tutorial
If you are running a multi-language plugin, you will probably want to ignore the strings in the options page.
You can do that like so:
<?php wp_pagenavi( array( 'options' => PageNavi_Core::$options->get_defaults() ) ); ?>