一.自写文章分页函数
当文章过于长时,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收录,如需进行优化则见下表述。