在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. 谢谢lucktu 提供的最全最好的解决方法,帮我解决了一大难题!

  2. 谢谢.按照你的指导,修改完成.很好..很全面..希望大家多多关照.

  3. 对不起,这几天公司事务多,实在忙不过来,见谅!

  4. http://www.pockethome.net 请看我现在的效果 可以qq联系吗?qq82419824 非常感谢

  5. 发现一个问题 设置了首页分类了以后 点击进去目录分类 文章没能完整的显示 被隐藏了一部分

  6. 请问 我的分页面应该是修改INDEX.PHP 我的主题没有 single.php
    我现在想弄的是目录分类下能实现这个效果 安装你这样改只能实现分页面 目录类还是长长的文章 因为我的文章都是放在目录类别里面 分页面有单独的作用 如果改??????

  7. 是的,是有那么一个插件。
    我这是不安插件的方法,因为许多人觉得安插件太多,影响速度。

  8. 爆料

    如果想在可视化编辑器里面调开“插入页面截断”按钮,只要安装TinyMCE Advanced插件即可

    这个插件可以实现类似Office里面“自定义工具栏”的功能,可以任意调整工具栏的按钮布局。同时最重要的是,可以解禁包括分页和字体字号在内的,WP没有放到默认工具栏布局里面的所有TinyMCE的功能。

  9. 谢谢,因为我也是使用者,所以方法来得真切。
    感谢关注!

  10. 你写的是最全面的,给的解决方法也是最好的

发表评论

*

Trackbacks and Pingbacks: