一.自写文章分页函数

当文章过于长时,WordPress(简称WP)允许在编辑文章时用<!–nextpage–>手动添加分页,这样每次WEB访问文章,则只显示某个分页部分。这样做有多种好处,如可以减轻访问者阅读的难度、可以通过访问不同分页刷新广告显示次数等。

WP标准的分页API函数是wp_link_pages,需要输入一个结构参数(请自行查找此函数官方文档),如果进行css修饰也不灵活,为此通过研读源码可知实现的关键函数是_wp_link_page,它只需输入分页码就可以返回URL,返回格式是<a href”<分页url>”>,具体实现如下。

<?php 
function fz_link_pages() {
	global $page, $numpages, $multipage, $more;

	if(!$multipage){return;} ?>
	<div><nav><ul class="pagination"><!--也可用pager-->
<?php
	if($page > 1){
		echo '<li>'._wp_link_page($page - 1).__( 'Previous page' ).'</a></li>';
	}else{
		echo '<li class="disable"><a>'.__( 'Previous page' ).'</a></li>';
	}
	for ( $i = 1; $i <=$numpages; $i++ ) {
		if($i == $page){
			echo '<li class="active"><a>'.$i.'</a></li>';
		}else{
			echo '<li>'._wp_link_page($i).$i.'</a></li>';
		}
	}
	if($page < $numpages){
		echo '<li>'._wp_link_page($page + 1).__( 'Next page' ).'</a></li>';
	}else{
		echo '<li class="disable"><a>'.__( 'Next page' ).'</a></li>';
	}
?>	
	</ul></nav></div>
<?php
}
?>

整个程序就是一个函数fz_link_pages(),可放在functions.php,也可就放在single.php文件后部,套用Bootstrap V3框架显示,框架层次是

<div><nav><ul class="pagination">
 	<li><a href="分页ur">显示文字 </a></li>
	... ...
</ul></nav></div>

程序通过$page, $numpages得到当前页编号和页面数,而$multipage则返回是否有多页,如果文章是单页(无多页)则直接返回。程序的主力函数就是_wp_link_page,但它只返回<a href=”…”>,故还需要后加</a>进行闭合。<li>根据不同的页面状态,分别设置类.disable、. active,这都是Bootstrap专有类,前者用于失效状态、后者用于当前页。

在single.php文章内容显示代码的前面或后面调用此函数,也可两个位置都安放,直接调用fz_link_pages()既可,可根据需要进行框架调整和CSS修饰。实现后效果如图 1所示。

图 1 文章分页

         此函数由于是用WP的_wp_link_page返回分页URL,故可根据不同的链接方式返回正确的值,如果不设固定链接,则返回值是<域名>/?p=id&page=页码,例如      https://fenginfo.com/?p=1638&page=2 。

如果设定固定链接,则返回值是<文章主页url>/页码,例如https://fenginfo.com/1638.html/2,这并不美观,也不利于SEO收录,如需进行优化则见下表述。

发表回复

Post Navigation