(转)如何使用Wordpress内置的分页功能?- Nextpage
2007-12-28 – 10:30 am原文:http://www.thinkagain.cn/archives/888.html (略有修改)
看到在论坛上也有一些网友在探讨关于Wordpress文章分页的 问题等,而且很多网友在寻找自动分页的插件。而实际上wordpress本身已经内置了文章的分页功能,即通过使用Nextpage标签来将文章分割成多个页面。手工加入标签虽然麻烦一点点的,但是对于分页的控制比自动分页要强很多。索性花了点时间好好整理了一 下,系统性地写下这篇文章,着重介绍下wordpress内置的nextpage标签分页及相关用法等。望对使用WP的网友有所帮助。
。文中涉及代码修改等,均只在2.3和2.3.1中测试通过,敬请注意。本文将包括如下几个部分内容。
nextpage标签,确切地说是,<!- -nextpage- ->代码,是wordpress内置的用于实现文章分页的一个page标签。您可以在一篇文章中插入多个nextpage标签实现多个分页。在文章 中插入该标签后,从文章开头至第一个nextpage标签为文章的第一个分页内容,第一个nextpage标签和第二个nextpage标签之间为文章第 二个分页的内容,以此类推,直至文章结束。这一点和more标签不同。
然而,有一点要注意,如果more标签在nextpage标签之前的话,在首页的输出中,还是会被more标签截断的。
在wordpress2.3中,虽然已经内置nextpage标签的输出功能,但在官方版中nextpage标签的输入默认都是被隐藏起来的,不知道为什么这么做。因而 需要我们修改代码来实现输入。有些非官方版的WP可能已经解开默认的nextpage输入了。
要解开可视化编辑器或富文本编辑器的nextpage标签输入隐藏的话,进入wp安装目录下的\wp-includes\js\tinymce,用文本编辑器打开tiny_mce_config.php,查找下面代码:”wp_more”,2.3.1版中在line32
$mce_buttons = apply_filters(’mce_buttons’, array(’bold’, ‘italic’, ’strikethrough’, ’separator’, ‘bullist’, ‘numlist’, ‘outdent’, ‘indent’, ’separator’, ‘justifyleft’, ‘justifycenter’, ‘justifyright’, ’separator’, ‘link’, ‘unlink’, ‘image’, ‘wp_more’, ’separator’, ’spellchecker’, ’separator’, ‘wp_help’, ‘wp_adv’, ‘wp_adv_start’, ‘formatselect’, ‘underline’, ‘justifyfull’, ‘forecolor’, ’separator’, ‘pastetext’, ‘pasteword’, ’separator’, ‘removeformat’, ‘cleanup’, ’separator’, ‘charmap’, ’separator’, ‘undo’, ‘redo’, ‘wp_adv_end’));
在wp_more后面加上:’wp_page’,如下图:
$mce_buttons = apply_filters(’mce_buttons’, array(’bold’, ‘italic’, ’strikethrough’, ’separator’, ‘bullist’, ‘numlist’, ‘outdent’, ‘indent’, ’separator’, ‘justifyleft’, ‘justifycenter’, ‘justifyright’, ’separator’, ‘link’, ‘unlink’, ‘image’, ‘wp_more’, ‘wp_page’,’separator’, ’spellchecker’, ’separator’, ‘wp_help’, ‘wp_adv’, ‘wp_adv_start’, ‘formatselect’, ‘underline’, ‘justifyfull’, ‘forecolor’, ’separator’, ‘pastetext’, ‘pasteword’, ’separator’, ‘removeformat’, ‘cleanup’, ’separator’, ‘charmap’, ’separator’, ‘undo’, ‘redo’, ‘wp_adv_end’));
保存退出。重新回到新建文章页面,可以看见在more标签边上已经多了nextpage标签的输入按钮。如下图。注,如果没出现按钮的话,请按Ctrl+F5重新载入页面,或清空浏览器缓存后再打开页面。
以上已经将nextpage标签按钮添加到可视化编辑器下,下面该代码将nextpage标签按钮添加到代码模式(quick tag)输入中。
进入wp安装目录\wp-includes\js,用文本编辑器打开quicktags.js,找到下述代码,2.3.1版quicktags.js在line134。
/*
edButtons[edButtons.length] =
new edButton(’ed_next’
,’page’
,’<!–nextpage–>’
,”
,’p’
,-1
);
*/
将line134和143中的注释代码/*和*/删除掉。保存,退出。进入文章编辑页面,在more按钮边上已经新出了page按钮。点击page,就可以将<!- -nextpage- ->添加到文章了
至此,我们已经将wordpress内置的nextpage标签输入解开了,但是如果没有在文章页模板文件中添加分页链接显示函数的话,文章页仅会显示第一个nextpage标签之前的内容。2.1版以后的wordpress采用:
来实现文章内分页链接的输出。请在文章页模板(通常为single.php)的loop中添加该代码。注,2.1版以前采用link_pages()函数。
您可以修改参数定制文本显示等。具体用法可参见官方介绍:http://codex.wordpress.org/Template_Tags/wp_link_pages。
可是在文章中添加了nextpage标签后,还有一个问题待解决,即feed中含有nextpage标签的文章内容将会被截断在第一个 nextpage标签处,而无法实现全文输出。本以为简单地写一个插件将<!- -nextpage- ->移除掉即可实现全文输出,但看了WP的源代码后,才发现实际并非如此。因为wp的the_post在处理查询时,会直接将文章内容用<! - -nextpage- ->分割保存到数组中。所以,我们需要修改这部分源代码来实现全文输出。如果您不介意feed被截断的话,可略过此节。
进入wp安装目录\wp-includes,用文本编辑器打开query.php。找到下述代码:
if (( preg_match(’/<!- -nextpage- ->/’, $content) ) and (!is_feed())) {
Popularity: 26% [?]