在wordpress2.7.1中实现单篇文章分页的方法之改进版

原文地址: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=&nbsp');
                    wp_link_pages('before=&after=&next_or_number=number');
                    echo "&nbsp;";
                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=&nbsp&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=&nbsp');
                    wp_link_pages('before=&after=&next_or_number=number');
                    echo "&nbsp;";
                    wp_link_pages('before=&after=&next_or_number=next&previouspagelink=&nbsp&nextpagelink=下一页');
                    ?> 
                    </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


100%(0)

100%(0)
发表评论?

2 条评论。

  1. 原来这样就能变成 上一页 1 2 3 下一页 的形式了,不错不错。
    再提一个小建议,把那3行php标记改成一个,可能会提高服务器的执行效率,代码在这里看吧:
    http://www.smartcarp.com/upfiles/200905/fenye2.txt

回复给 carp ¬
取消回复

*