0%

WordPress 给单篇文章增加分页功能

1.nextpage标签的作用及使用方法。
nextpage标签,确切地说是,<!- -nextpage- ->代码,是wordpress内置的用于实现文章分页的一个page标签。您可以在一篇文章中插入多个nextpage标签实现多个分页。在文章中插入该标签后,从文章开头至第一个nextpage标签为文章的第一个分页内容,第一个nextpage标签和第二个nextpage标签之间为文章第二个分页的内容,以此类推,直至文章结束。这一点和more标签不同。
然而,有一点要注意,如果more标签在nextpage标签之前的话,在首页的输出中,还是会被more标签截断的。
2.如何在编辑时插入nextpage标签?
在wordpress2.3中,虽然已经内置nextpage标签的输出功能,但在官方版中nextpage标签的输入默认都是被隐藏起来的。因而需要我们修改代码来实现输入。而具体为什么会被隐藏,原因就不得而知了。注,有些非官方版的WP可能已经解开默认的nextpage输入了。
a.可视化模式输入
要解开可视化编辑器或富文本编辑器的nextpage标签输入隐藏的话,进入wp安装目录下的\wp-includes\js\tinymce,用文本编辑器打开tiny_mce_config.php,查找下面代码:”wp_more”,2.3.1版中在line32

在wp_more后面加上:’wp_page’,如下图:

保存退出。重新回到新建文章页面,可以看见在more标签边上已经多了nextpage标签的输入按钮。如下图。注,如果没出现按钮的话,请按Ctrl+F5重新载入页面,或清空浏览器缓存后再打开页面。

b.代码模式输入
以上已经将nextpage标签按钮添加到可视化编辑器下,下面该代码将nextpage标签按钮添加到代码模式(quick tag)输入中。
进入wp安装目录\wp-includes\js,用文本编辑器打开quicktags.js,找到下述代码,2.3.1版quicktags.js在line134。

将line134和143中的注释代码//删除掉。保存,退出。进入文章编辑页面,在more按钮边上已经新出了page按钮。点击page,就可以将<!- -nextpage- ->添加到文章了。

3.如何是模板支持nextpage?
至此,我们已经将wordpress内置的nextpage标签输入解开了,但是如果没有在文章页模板文件中添加分页链接显示函数的话,文章页仅会显示第一个nextpage标签之前的内容。2.1版以后的wordpress采用:

来实现文章内分页链接的输出。请在文章页模板(通常为single.php)的loop中添加该代码。注,2.1版以前采用link_pages()函数。
默认输出效果为:
Pages: 1 2 3

您可以修改参数定制文本显示等。具体用法可参见官方介绍:http://codex.wordpress.org/Template_Tags/wp_link_pages。
4.如何是feed输出全文,而不被nextpage截断?
可是在文章中添加了nextpage标签后,还有一个问题待解决,即feed中含有nextpage标签的文章内容将会被截断在第一个nextpage标签处,而无法实现全文输出。本以为简单地写一个插件将<!- -nextpage- ->移除掉即可实现全文输出,但看了WP的源代码后,才发现实际并非如此。因为wp的the_post在处理查询时,会直接将文章内容用<!- -nextpage- ->分割保存到数组中。所以,我们需要修改这部分源代码来实现全文输出。如果您不介意feed被截断的话,可略过此节。
进入wp安装目录\wp-includes,用文本编辑器打开query.php。找到下述代码:
if ( preg_match(‘/<!- -nextpage- ->/’, $content) ) {

改为
if (( preg_match(‘/<!- -nextpage- ->/’, $content) ) and (!is_feed())) {

即增加一个判断条件,也就是在feed输出时不截断文章。