分页导航(插件&非插件)
插件版
在之前的文章安装插件中曾经提到过一个优秀的分页导航插件 WP-PageNavi,但是当时即使后台启动也无法体现。这次就讲一下如何应对这种情况。参考WordPress翻页插件WP-PageNavi分页插件(链接失效),简要概括为以下步骤:
- 后台自动安装此插件,启动后到设置页面进行相关设置;
- 查看是否有分页效果,如果没有,进入下一步;
- 在
index.php
页面找到类似以下代码,也就是系统本身的导航代码进行替换。
比如我的是:
<div class="navigation">
<p class="alignleft"><?php next_posts_link('« Older Entries') ?></p>
<p class="alignright"><?php previous_posts_link('Newer Entries »') ?></p>
</div>
替换为
<?php wp_pagenavi(); ?>
之后刷新页面就大功告成啦!亲测有效~
非插件版
2011-11-14补充:Demon 童鞋留言说可以不用插件用 Willin 的代码实现分页。本来 Cyan 想着换成 ajax 分页,但是网搜后发现极其难懂,于是还是遵循建议,找到了 Willin 的 mini 分页代码。参考文章:willin 出品的 Mini Pagenavi 修改版、为 Mini Pagenavi 添加“上一页”、“下一页”链接、干掉WP-PageNavi – 非插件实现分页导航(链接失效)。
粘贴以下代码到 function.php
的 ?>
之前:
/* Mini Pagenavi v1.0 by Willin Kan. */
if ( !function_exists('pagenavi') ) {
function pagenavi( $p = 3 ) { // 取当前页前后各 3 页
if ( is_singular() ) return; // 文章与插页不用
global $wp_query, $paged;
$max_page = $wp_query->max_num_pages;
if ( $max_page == 1 ) return; // 只有一页不用
if ( empty( $paged ) ) $paged = 1;
echo '<span class="pages">' . $paged . ' / ' . $max_page . ' </span> '; // 显示页数
if ( $paged > 1 ) p_link( $paged - 1, '上一页', '«' );/* 如果当前页大于1就显示上一页链接 */
if ( $paged > $p + 1 ) p_link( 1, '最前页' );
if ( $paged > $p + 2 ) echo '... ';
for( $i = $paged - $p; $i <= $paged + $p; $i++ ) { // 中间页
if ( $i > 0 && $i <= $max_page ) $i == $paged ? print "<span class='current'>{$i}</span> " : p_link( $i );
}
if ( $paged < $max_page - $p - 1 ) echo '... ';
if ( $paged < $max_page - $p ) p_link( $max_page, '最后页' );
if ( $paged < $max_page ) p_link( $paged + 1,'下一页', '»' );/* 如果当前页不是最后一页显示下一页链接 */
}
function p_link( $i, $title = '', $linktype = '' ) {
if ( $title == '' ) $title = "第 {$i} 页";
if ( $linktype == '' ) { $linktext = $i; } else { $linktext = $linktype; }
echo "<a href='", esc_html( get_pagenum_link( $i ) ), "' title='{$title}'>{$linktext}</a> ";
}
}
// -- END ----------------------------------------
然后在 index.php
/home.php
/archive.php
等页面调用
<div><?php if (function_exists('pagenavi')) { pagenavi(); } ?></div>
关于样式,可以自己到 css 里修改成符合主题的,比如我的如下:
.wp-pagenavi {
clear: both;
}
.wp-pagenavi a, .wp-pagenavi span {
text-decoration: none;
border: 0px solid #cccccc;
padding: 8px;
margin: 0;
font-size: 14px;
font-family: Cambria;
}
.wp-pagenavi a:hover, .wp-pagenavi span.current {
border-color: #cccccc;
}
.wp-pagenavi span.current {
font-weight: bold;
border-top: 2px solid #ccc;
}
防止日后改主题换样式,这边贴个以上css样式的效果图: