原文地址:http://xc84.com/detailed-in-the-wordpress-in-the-single-page-feature-articles
注:本文是在原文的基础上,结合网友 carp 朋友的代码,以及自己的体会,修改而成。
有些很长的文章,例如上几万字的,甚至几十万字的,在首页还可以用“ <!--more--> ”代码分隔。可是,打开单页的时候,如果一下子拉出几十米长的文章来肯定会吓跑很多读者的。
这时候就需要用到另一个分页的代码“ <!--nextpage--> ”来将文章进行适量的缩短,做成内分页,不仅能增加读者的文章阅读舒适度,还能让页面的打开速度加快不少,尤其是文章有很多插图的时候。
可是,wordpress 2.7 默认无法使用“ <!--nextpage--> ”,只能自己动手来丰衣足食了。
注意:以下文件的修改最好用专业的文档编辑软件(例如:EmEditor),以“UTF-8”格式保存!(覆盖时注意备份)
1.后台编辑支持
在wordpress的后台编辑发表文章的地方是没有nextpage分页选项的,因为默认将其屏蔽了,我们要做的就是将选项重新开启,这样就可以在编辑的时候看见了。
首先找到wordpress的文件,在文件夹“\wp-includes\js”下,找到“quicktags.js”,在其中找到以下的句子:
/* edButtons[edButtons.length] = new edButton('ed_next' ,'page' ,'<!--nextpage-->' ,'' ,'p' ,-1 ); */
然后将符号“/*”和“*/”都删除掉,这符号相当于把其中的句子作为编码注释给屏蔽了,删除掉后就相当于打开了中间语句的功能。
接着,再找到以下的句子:
// t.Buttons[t.Buttons.length] = new edButton(name+'_next','page','<!--nextpage-->','','p',-1);
去掉句子前面的符号“//”。
将文件保存(保存方式请看前面的“注意”),上传、覆盖,我们就可以在后台的“HTML源代码”编辑中看见“page”的代码插入选项了。 如图:
接着,我们实现在“可视化编辑”中也能插入分页代码。在文件夹“\wp-admin\includes”中,打开编辑“post.php”,找到以下的句子:
'|', 'link', 'unlink', 'wp_more', '|',
在“ 'wp_more', ”后面添加上“ 'wp_page', ”,语句变成了:
'|', 'link', 'unlink', 'wp_more','wp_page', '|',
保存、上传、覆盖,就可以在“可视化编辑”中看见如图所示的选项了: 。
不过,这样只是让后台有了支持,还必须需要单页文件“single.php”的函数支持,我们接着以下的操作。
2.模板支持分页显示
找到自己使用的模板“\wp-content\themes\你使用的模板文件夹”,找到“single.php”,打开找到:
<?php the_content(); ?>
然后在这个语句后面增加以下的代码(感谢carp朋友的原代码):
<p> <?php wp_link_pages('before=&after=&next_or_number=next&previouspagelink=上一页&nextpagelink= '); wp_link_pages('before=&after=&next_or_number=number'); echo " "; wp_link_pages('before=&after=&next_or_number=next&previouspagelink= &nextpagelink=下一页'); ?> </p>
其中的“页次”两字你可以改成自己想用的。 如果你想在自己的首页实现分页功能(注:建议你不要修改首页的,这是原作者的方法;首页建议你用分页的插件来实现,此处的贴出仅供参考吧),需要在“\wp-content\themes\你使用的模板文件夹”,找到“index.php”,查找语句:
the_content
用我的举例:我的是查找后,找到“ <?php the_content(__('Read more...', 'elegantbox')); ?> ”,然后在语句后面添加语句:
<p> <?php wp_link_pages('before=&after=&next_or_number=next&previouspagelink=上一页&nextpagelink= '); wp_link_pages('before=&after=&next_or_number=number'); echo " "; wp_link_pages('before=&after=&next_or_number=next&previouspagelink= &nextpagelink=下一页'); ?> </p>
将修改后的文件保存、上传并覆盖。
以上的两步操作,我们就已经实现了单篇文章分页功能了,如图:
可是,在feed输出时会出现文章不全的问题,所以,需要再稍微修改一下。
if ( strpos( $content, '<!--nextpage-->' ) )
然后将其改成:
if ( strpos( $content, '<!--nextpage-->' ) && (!is_feed()) )
老样子,保存、上传、覆盖。
nextpage与more的不同在于,more只能用一次,而且是在首页管用,而nextpage可以在文章中反复插入,实现像本文的效果,分成很多页面。要注意是,如果more标签在nextpage标签之前的话,在打开首页的时候,文章还是会被more标签截断。
示例:http://www.lucktu.com/html/2009/05/110.html
原来这样就能变成 上一页 1 2 3 下一页 的形式了,不错不错。
再提一个小建议,把那3行php标记改成一个,可能会提高服务器的执行效率,代码在这里看吧:
http://www.smartcarp.com/upfiles/200905/fenye2.txt
我已更正,谢谢你的原代码和你的改进意见!