2009-08-24

在wordpress中实现单篇文章分页的方法

在wordpress中实现单篇文章分页的方法

        此方法其实是本站文章“在wordpress2.7.1中实现单篇文章分页的方法之改进版”的
升级版,方法类似,请对照修改。

      有些很长的文章,例如上几万字的,甚至几十万字的,在首页还可以用“
<!–more–> ”代码分隔。可是,打开单页的时候,如果一下子拉出几十米长的文章来肯定会吓跑很多读者的。

      这时候就需要用到另一个分页的代码“ <!–nextpage–>
”来将文章进行适量的缩短,做成内分页,不仅能增加读者的文章阅读舒适度,还能让页面的打开速度加快不少,尤其是文章有很多插图的时候。

      可是,wordpress 2.8 默认无法使用“ <!–nextpage–> ”,只能自己动手来丰衣足食了。

     
注意:以下文件的修改最好用专业的文档编辑软件(例如:EmEditor、EditPlus,并注意使用关键字搜索的功能查找你要修改的位置),以
“UTF-8”格式保存!

      以下方法是针对wordpress2.8版本的。
果将来增加了更高版本,并且方法需要更新的时候,我再在此文章增加下一页,以及下下一页来完善,敬请注意针对版本。

1.后台编辑支持

      在wordpress的后台编辑发表文章的地方是没有nextpage分页选项的,因为wordpress
v2.8已将相关的代码删除了,我们需要将它加上去。

     
首先找到wordpress的文件,在文件夹“\wp-includes\js”下,找到“quicktags.js”,在其中找到以下的句子:


edButtons[edButtons.length]=new edButton("ed_more","more","<!--more-->","","t",-1);

      然后在它的后面添加如下代码:


edButtons[edButtons.length]=new edButton("ed_next","page","<!--nextpage-->","","p",-1);

      接着,再找到以下的句子:


j.Buttons[j.Buttons.length]=new edButton(a+"_more","more","<!--more-->","","t",-1);

      在它的后面添加如下代码:


j.Buttons[j.Buttons.length]=new edButton(a+"_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><br />                    <?php<br />                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=上一页&nextpagelink=&nbsp');<br />                    wp_link_pages('before=&after=&next_or_number=number');<br />                    echo "&nbsp;";<br />                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=&nbsp&nextpagelink=下一页');<br />                    ?><br />                    </p>

      其中的“页次”两字你可以改成自己想用的。
如果你想在自己的首页实现分页功能(注:建议你不要修改首页的,首页建议你用专门的分页插件来实现,此处的贴出仅供参考),需要在“\wp-
content\themes\你使用的模板文件夹”,找到“index.php”,查找语句:


the_content

      用我的举例:我的是查找后,找到“ <?php the_content(__(’Read more…’,
‘elegantbox’)); ?> ”,然后在语句后面添加语句:


                       <p><br />                    <?php<br />                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=上一页&nextpagelink=&nbsp');<br />                    wp_link_pages('before=&after=&next_or_number=number');<br />                    echo "&nbsp;";<br />                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=&nbsp&nextpagelink=下一页');<br />                    ?><br />                    </p>

      将修改后的文件保存、上传并覆盖。


      以上的两步操作,我们就已经实现了单篇文章分页功能了,如图:


      可是,在feed输出时会出现文章不全的问题,所以,需要再稍微修改一下。


3.避免feed输出不全

      找到“\wp-includes”目录下的“query.php”,寻找以下的语句:

if ( strpos( $content, '<!--nextpage-->' ) )

然后将其改成:


if ( strpos( $content, '<!--nextpage-->' ) && (!is_feed()) )

      老样子,保存、上传、覆盖。


4.其他

      我还没发现如何实现Windows Live
Writer中像插入more代码那样插入nextpage代码的办法,也没找到有什么插件可以实现。现在还是只能在html编辑的状态插入代码,不过也
不麻烦。

     
nextpage与more的不同在于,more只能用一次,而且是在首页管用,而nextpage可以在文章中反复插入,实现像本文的效果,分成很多页
面。要注意是,如果more标签在nextpage标签之前的话,在打开首页的时候,文章还是会被more标签截断。


      示例:http://www.lucktu.com/html/2009/05/110.html

精选文章

旧手机变废为宝|五分钟安装Ollama跑开源大模型 - 开发调优 - LINUX DO

旧手机变废为宝|五分钟安装Ollama跑开源大模型 - 开发调优 - LINUX DO 在开始之前,请你先准备好一台旧Android手机以及特殊的网络环境。 1.安装Termux 2.更新软件包及依赖 pkg update && pkg upgrade 3.安...