不去在乎结果,热情地付出过,就好了.

非插件实现wordpress文章列表分页导航

很多wordpress主题原来都没有分页导航功能,

只有新的文章和旧的文章两个连接按钮,

要是找以前的文章,就得一阵翻,

WordPress下的分页插件很多,

像PageNavi, Pagebar, WP Page Numbers等等,

这些插件能够让你的wordpress增加多样式的导航, 同时也带上一定的样式效果,

不过是用插件博客的效率就会降低,

尤其是我这样的免费空间,内存分配有限,

如果插件多了就会出现内存错误,连blog就进不了,

所以代码实现才是王道.

现在开始.

将以下代码插入到主题的functions.php文件中(<?php ?>标签内部),

function wp_pagenavi($range = 9){
	global $paged, $wp_query;
	if ( !$max_page ) {
		$max_page = $wp_query->max_num_pages;
	}
	if($max_page > 1){
		if(!$paged){
			$paged = 1;
		}
		if($paged != 1){
			echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳转到首页'> 返回首页 </a>";
		}
		previous_posts_link(' 上一页 ');
		if($max_page > $range){
			if($paged < $range){
				for($i = 1; $i <= ($range + 1); $i++){
					if($i==$paged) echo "<a class='current'>$i</a>";
					else echo "<a href='" . get_pagenum_link($i) ."'>$i</a>";
				}
			}
			elseif($paged >= ($max_page - ceil(($range/2)))){
				for($i = $max_page - $range; $i <= $max_page; $i++){
					if($i==$paged) echo "<a class='current'>$i</a>";
					else echo "<a href='" . get_pagenum_link($i) ."'>$i</a>";
				}
			}
			elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
				for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){
					if($i==$paged) echo "<a class='current'>$i</a>";
					else echo "<a href='" . get_pagenum_link($i) ."'>$i</a>";
				}
			}
		}
		else{
			for($i = 1; $i <= $max_page; $i++){
				if($i==$paged) echo "<a class='current'>$i</a>";
				else echo "<a href='" . get_pagenum_link($i) ."'>$i</a>";
			}
		}
		next_posts_link(' 下一页 ');
		if($paged != $max_page){
			echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳转到最后一页'> 最后一页 </a>";
		}
	}
}

然后再所有文章列表页的所需位置添加以下代码(index.php、archive.php、category.php、search.php),

<div class="navigation"><?php wp_pagenavi(); ?></div>

这样就已经添加了分页导航功能了, 不过每个主题都不一样,比如我的,自带判断, 如果functions.php里面有类似上面功能的函数,就会显示分页导航, 如果没有就会显示新旧文章链接, 所以我就没有把代码加入index.php、archive.php、category.php、search.php这些文件这一步.

然后美化一下,将以下代码加入主题的style.css文件(请自行调教),

.navigation {
	font-size: 1.3em;
	font-weight: bold;
	text-shadow: 0 1px 0 #fff;
	width:100%;
	line-height:36px;
	text-align:center;
	overflow:hidden;
	}
.navigation a {
	padding:3px 8px;
	margin:2px;
	text-decoration:none;
	color:#888;
	border:1px solid #ccf;
	}
.navigation a:hover, .navigation a.current {
	border:1px solid #3c5978;
	color:#113c68;
	font-weight:bolder;
	background-color:#679ad0;
	text-shadow: none;
	}

这样大概效果就有了.

如果是复制的我上面的代码,下面应该可以不用做了,

接下来添加本页不可点击效果,在functions.php中查找,

echo “<a class="’current’”;" href="’”">$i</a>”;

共有四处,全部替换为,

if($i==$paged)

echo “<a class="’current’">$i</a>”;

else echo “<a href="’”">$i</a>”;

该段代码先判断是否本页,如果是则不再<a>标签内部添加href属性.

至此已修改完毕,看过我之前文章的读者做起来应该不难.

Over

打赏

5 comments

ancolor进行回复 Cancel reply

1 × 5 =

    • 之前是自己做好以后才写的文章,代码可能有点乱,我把代码又整理了一下,你再试下看看,让你很困扰,实在抱歉

    • 采用的时候自己检查一下哦,我这也是复制过来的,
      编辑的时候在可视化和HTML模式切换可能造成标点符号错误 :smilies33:

不去在乎结果,热情地付出过,就好了.
某一天,你所坚持的,和承担过的一切,会有回应。它们并非失去踪迹,只是需要时间抵达。这和星光落入眼睛里,是一样的道理。

近期文章

近期评论