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

        此方法其实是本站文章“在wordpress2.7.1中实现单篇文章分页的方法之改进版”的升级版,方法类似,请对照修改。已在wordpress 2.8、2.8.4、3.1.2、3.1.3上面通过。
      有些很长的文章,例如上几万字的,甚至几十万字的,在首页还可以用“ <!--more--> ”代码分隔。可是,打开单页的时候,如果一下子拉出几十米长的文章来肯定会吓跑很多读者的。
      这时候就需要用到另一个分页的代码“ <!--nextpage--> ”来将文章进行适量的缩短,做成内分页,不仅能增加读者的文章阅读舒适度,还能让页面的打开速度加快不少,尤其是文章有很多插图的时候。
      可是,wordpress 2.8 默认无法使用“ <!--nextpage--> ”,只能自己动手来丰衣足食了。
      注意:以下文件的修改最好用专业的文档编辑软件(例如:EmEditor、EditPlus,并注意使用关键字搜索的功能查找你要修改的位置),以“UTF-8”格式保存!
      以下方法在wordpress2.8、2.8.4、3.1.2、3.1.3中都有效。如果将来增加了更高版本,并且方法需要更新的时候,我再在此文章增加下一页,以及下下一页来完善,敬请注意针对版本。

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朋友的原代码,2011.5.19再修正):

                    <div align="center">Š                    <?php
                    my_wp_link_pages('before=&after=&next_or_number=next&previouspagelink=<strong>上一页</strong>&nextpagelink=&nbsp');
                    my_wp_link_pages('before=&after=&next_or_number=number');
                    // echo "&nbsp;"; 因为在没有上下页时会产生一个空行,故注释掉
                    my_wp_link_pages('before=&after=&next_or_number=next&previouspagelink=&nbsp&nextpagelink=<strong>下一页</strong>');
                    ?>
                    </div>

      其中的“页次”两字你可以改成自己想用的。 如果你想在自己的首页实现分页功能(注:建议你不要修改首页的,首页建议你用专门的分页插件来实现,此处的贴出仅供参考),需要在“\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标签截断。

      示例:WordPress单篇文章分页静态化错误的处理方法 http://www.lucktu.com/archives/348.html


100%(8)

0%(0)
发表评论?

18 条评论。

  1. 自叹写不出几十米长的文章。

  2. 我的3.1.2文章内分页,分不出来

    • 我刚才测试了一下,3.1.3可以,以前在3.1.2的时候,我看我以前分页的文章都是正常,所以也判定是正常的,但是没有发布过新的需要分页的文章,刚才在3.1.3版本下,测试发布新文章是正常的。不知楼主“分不出来”是什么意思?我怎么在3.1.3上面既分的出来,也显示得出来 。。。

  3. 不知不觉之中,我的wordpress升级到3.0.1版本了,这个功能还是能用啊!

  4. That’s well known that money can make us free. But how to act when somebody doesn’t have cash? The one way only is to try to get the business loans or collateral loan.

回复给 lucktu ¬
取消回复

*

Trackbacks and Pingbacks: