WordPress自带的分页不好用,只有上一页,下一页。感觉不爽,google了几下,分页插件倒是有,下过来想安装,但感觉代码太多,看了一下 wp-pagenavi 的分页插件,发现它怎么没写SQL,原来是我白痴了一回,$request = $wp_query->request;就能得到,而且$wp_query->max_num_pages就能得到最多页数,有了这个参数,自己写完全没有问题。于是瞎捣鼓写了一个分页。
效果如我博客分页一致,最多显示5个页码,也就是1 2 3 4 5,2 3 4 5 6,3 4 5 6 7这种。那这种分页有三种情况:
- 少于或者等于5页时,始终显示1 2 3 4 5
- 页数在最后3个页数时,始终显示最后5页
- 其他都是加2减2
- 附加功能,显示 首页 上一页 下一页 末页,情况在不是第一页和最后一个
那么就可以动手写了。
function mj_pagenav() {
global $wpdb, $wp_query;
if (!is_single()) {
$CycNum = 5; //最多页数
$maxPage = $wp_query->max_num_pages; //最多页数
$paged = intval(get_query_var('paged')) === 0 ? 1 : intval(get_query_var('paged')) ; //paged=? 参数
$Button = array("首页","上一页","下一页","未页");
if($paged - 2 <= 1){
$FirstNum = 1;
$LastNum = min($maxPage, $CycNum);
}elseif($maxPage - $paged <= 2){
$FirstNum = ($maxPage - 4 == 0) ? 1 : ($maxPage - 4);
$LastNum = $maxPage;
}else{
$FirstNum = $paged - 2;
$LastNum = $paged + 2;
}
//输出 首页 上一页
echo ( 1 >= $paged ) ? ''
: '<a href="' .get_option('siteurl') . '/">' . $ButtonArray[0] . '</a>
<a href="' .get_option('siteurl') . '/page/' . ($paged - 1) . '/">' . $ButtonArray[1] . '</a>';
//输出 页码
for($i = $FirstNum; $i <= $LastNum; $i++){
if ( $i == $paged ){
$pageText = '<a href="' .get_option('siteurl') . '/page/' . $i . '/"><em>' . $i . '</em></a>';
}else{
$pageText = '<a href="' .get_option('siteurl') . '/page/' . $i . '/">' . $i . '</a>';
}
echo $pageText;
}
//输出 下一页 末页
echo ($max_page == $paged ) ? ''
: '<a href="' .get_option('siteurl') . '/page/' . ($paged + 1) . '/">'. $ButtonArray[2] .'</a>
<a href="' .get_option('siteurl') . '/page/' . ($max_page) . '/">'. $ButtonArray[3] .'</a>';
}
}
代码比较简单,“上一页 下一页” 我都整在一行,将就着看。把mj_pagenav()放到该放的地方,简单的分页就弄好了,复杂的分页就再加几行代码(我这里把/page/xx写死了,只适应首页哈,搜索和存档等其它页的分页有空再改一下,-__-)。
本博客所有文章遵循创作共用版权协议,要求署名、非商业、保持一致。转载时请先阅读以上许可协议,并以超链接形式注明出处。
这篇文章发表于2008年09月09日 11:59:43, 并被分类于HTML/CSS/JS/PHP. 您可以通过订阅 RSS 2.0 跟踪对这篇文章的评论, 也可以发表你的评论, 或者在您自己的网站中引用(trackback)该篇日志.
已有 9 条评论
大哥,求你了。代码打个包不麻烦的……
嗯,有空好好整理一下。。
如果你觉得你一个人战斗可以的话。你尽可以发挥你的才智和勇气!
我的友情链接没拉。鸡鸡
sorry,上次整理blog,数据都丢了 ,链接也都懒的加回去,挖哈哈,8过现在加上了。
那个搜索存档的什么时候可以弄啊,呵期待
我好像来过你的博客了。不过既然来了。给你留点东西吧 (*^__^*) 嘻嘻……
用了一下,貌似第一页和第二页的内容是一样的~~
is_archive = true; $wp_query->is_home = false;?>
我使用了这个在首页显示特定分类的文章
原文在这:http://smartr.cn/wordpress/how-to-use-query-posts-in-wordpress.html