WordPress文章中添加上一篇、下一篇链接专题研究

免费教程   2011年11月23日 22:26  

Wordpress文章中添加上一篇、下一篇链接专题研究

因为现在写文章都是关注一个话题的,所以一般地几篇文章下来,都是围绕一个中心话题来展开的。例如就像大家最近看到了几篇文章一样,英文网赚中介绍了广告联盟amazon.com,然后又谈到了Wordpress插件应用。

一般我都会在文章末尾中告诉下一篇文章的内容是什么,但是这里有一个问题就是,像免费资源部落这样的CMS主题型的Wordpress,一般下一篇的内容可能是另外一个分类的,所以直接给出来下一篇链接,可能是与本分类无关的。

于是我就想到在每篇文章末尾加上上一篇、下一篇链接,并且要求显示的本篇文章所在分类的上一篇、下一篇文章,这样当我在文章当中提示下一篇文章时,读者应该很容易找到相关内容了。

这次制作了这个Wordpress文章中添加上一篇、下一篇链接专题研究,你可以从文章当中了解到如何在文章内页当中上一篇、下一篇链接,显示特定的分类下的上一篇、下一篇,以及利用add_filter随心所欲地在文章开头或者结尾添加内容。

本篇文章适合那些WordPress新手,当然你如果是一个Wordpress折腾户,下面的免费教程一定不要错过:

WordPress文章中添加上一篇、下一篇链接专题研究

一、 一般的添加上一篇、下一篇链接方法

1、这个方法几乎在所有的Wordpress主题中都可以看得到。一般是在Single.php文件中文章内容下方添加以下代码即可,如果你没有这个功能,可以自己添加。如下:

  • <?php previous_post_link('上一篇: %link') ?>
    <?php next_post_link('下一篇: %link') ?>

2、这样添加的话,有一个非常大的问题就是如果是第一篇文章,或者是最后一篇文章,会出现上一篇,或者下一篇空白,如下图:

Wordpress显示空白

二、填补空白添加上一篇、下一篇链接方法

1、解决上面的问题,自然是添加一个判断输出了else,当出现没有上一篇或者下一篇时,就显示一句话,如下:

  • <?php if (get_previous_post()) { previous_post_link('上一篇: %link');} else {echo "没有了,已经是最后文章";} ?>
    <?php if (get_next_post()) { next_post_link('下一篇: %link');} else {echo "没有了,已经是最新文章";} ?>

三、显示同分类下的上一篇、下一篇链接方法

1、要想很好的理解这一原理,先来学习一下Wordpress的上一篇、下一篇的函数格式:

  • <?php previous_post_link($format, $link, $in_same_cat = false, $excluded_categories = ''); ?>
  • <?php next_post_link($format, $in_same_cat = false, $excluded_categories = ''); ?>

2、相关说明如下:

$format:格式化被显示的字符串,缺省值是”‘« %link”,第二个函数缺省值是”%link »”。

$link:被显示的字符串,缺省值是上一篇或下一篇的”$title”,也可以设置为其它你想显示的字符串。

$in_same_cat :表示是显式同一类别下的文章还是不区分类别的文章,缺省值false表示不区分类别,只以发帖的时间先后来确定。

$excluded_categories:表示在显示上一篇或下一篇时是否排除掉某分类,缺省不排除,如果排除,把分类ID列在此处,以英文逗号分隔。

3、于是相信大家都看出来了,实现同分类下的上一篇、下一篇链接,只要在上面的基础上添加一个判断:true,当同分类下存在文章时就显示出来。如下图:

  • <?php if (get_previous_post()) { previous_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最后文章";} ?>
    <?php if (get_next_post()) { next_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最新文章";} ?>

4、但是这里也有一个问题就是当指定了同分类下的上一篇、下一篇时,会依然显示空白,而不是输出代码中的“已经是最后文章”,所以我们还需要给特定的分类下指定ID就行了。代码如下:

  • <?php
    $categories = get_the_category();
    $categoryIDS = array();
    foreach ($categories as $category) {
    array_push($categoryIDS, $category->term_id);
    }
    $categoryIDS = implode(",", $categoryIDS);
    ?>
    <?php if (get_previous_post($categoryIDS)) { previous_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最后文章";} ?>
    <?php if (get_next_post($categoryIDS)) { next_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最新文章";} ?>

四、添加同分类下的上一篇、下一篇链接代码

1、一般地如果你想在文章前面添加上一篇、下一篇,就找到Single.php文件中的<?php if (have_posts()) : while (have_posts()) : the_post(); ?>,紧临其后添加,如下图:

Wordpress添加代码

2、利用add_filter添加。先来学习一个add_filter吧:

  • <?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>

3、参数说明如下:

  • $tag:$function_to_add 要HOOK的过滤器名称,默认是无。
  • $function_to_add:当过虑器应用时调用的函数名称,默认是无。
  • $priority:权重,多个add_filter存在时可以在这里决定优先级,默认是:10.
  • $accepted_args:函数可以接受的文档数目。默认是:1.

4、搞定了上面的,那么直接上函数,自己定义一个函数名称,然后利用add_filter执行,这里有一个好处就是当你的Wordpress存在多个add_filter时,你可以用优先级来决定优先关系。这样你添加的上一篇、下一篇链接可以保证在紧临文章后面。

5、将以下代码添加到你的Function.php文件中就行了。如下:

  • function freehao123in(){
  • <?php
    $categories = get_the_category();
    $categoryIDS = array();
    foreach ($categories as $category) {
    array_push($categoryIDS, $category->term_id);
    }
    $categoryIDS = implode(",", $categoryIDS);
    ?>
    <?php if (get_previous_post($categoryIDS)) { previous_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最后文章";} ?>
    <?php if (get_next_post($categoryIDS)) { next_post_link('上一篇: %link','%title',true);} else { echo "没有了,已经是最新文章";} ?>
  • }
  • add_filter("the_content", "freehao123in",2);

5、最后的效果请看下图(我利用add_filter解决了与缩略图插件、投票插件的冲突关系,保证了上一篇、下一篇在紧临文章后面):

Wordpress文章中添加上一篇、下一篇效果演示

五、上一篇、下一篇链接小结

1、如果你只要想要为你的Wordpress的文章内页添加一个上一篇、下一篇,只要按照普通的实现方法就行了。不用管后面的复杂应用。

2、上面主要是解决了像我这样的特殊情况,如果你也安装了关联文章插件、投票插件等在文章末尾显示,那么一定要用到add_filter了。

3、PS:20120719更新,这里还提供一个由fenglibin.com博主介绍的“在WordPress的文章页面获取上一页及下一页的链接URL地址,实现通过键盘的前进后退键进行翻页”的方法,有兴趣的朋友可以尝试一下:https://www.fenglibin.com/get_pre_and_next_page_url_in_wordpress.html

文章出自:免费资源部落 https://www.freehao123.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有74 位神马家族成员冒出泡来在农场开始干活了
  • 内核

    这个上一页下一页的功能,几乎所有的Wordpress都已经自带了吧。分类下的上一页,下一页,倒是非常有用,尤其是对于那些CMS分类是相当好的。

    这是农场的第 1 块农田,部落批准 [内核] 在[2011-11-24 00:53]开垦完成.
  • mc

    WordPress这个功能还是挺实用的。配置一下JS和CSS,就可以整出漂亮的阅读效果出来了。

    这是农场的第 2 块农田,部落批准 [mc] 在[2011-11-24 01:25]开垦完成.
  • xzymoe 10

    虽然网站IP有限,不过可用这些方式来增加PV也是一个不错的办法,就是看见代码……….头疼……

    qi 回复:

    对代码不感兴趣?

    xzymoe 回复:

    @qi, 原来还是感兴趣的 但是现在见到php就怕 因为不会php啊

    qi 回复:

    呵呵,,慢慢学。

    这是农场的第 3 块农田,部落批准 [xzymoe] 在[2011-11-24 08:01]开垦完成.
  • oy07 9

    你用的关联文章插件是什么的呀?好像不是无觅的吧

    qi 回复:

    是的,用的是缩略图插件。

    这是农场的第 4 块农田,部落批准 [oy07] 在[2011-11-24 08:51]开垦完成.
  • dwi

    add_filter我一般用来添加广告代码的,不过用在这里也不错。方便快捷。

    这是农场的第 5 块农田,部落批准 [dwi] 在[2011-11-24 11:20]开垦完成.
  • 机会

    关联文章插件和我的一个广告插件有问题,该如何协调?

    qi 回复:

    用优先级进行调节。

    这是农场的第 6 块农田,部落批准 [机会] 在[2011-11-24 13:00]开垦完成.
  • 虚位以待

    原来add_filter还有做优先级呀,Wordpress的代码果然精深。

    这是农场的第 7 块农田,部落批准 [虚位以待] 在[2011-11-24 19:05]开垦完成.
  • 小军 3

    呵呵 又学习了一点,给收藏下来备用学习了!

    这是农场的第 8 块农田,部落批准 [小军] 在[2011-11-24 19:14]开垦完成.
  • 停车场

    这个分类下的WP上下页链接方法不错,一般地Wordpress只是按照时间来排列的。

    这是农场的第 9 块农田,部落批准 [停车场] 在[2011-11-25 00:36]开垦完成.
  • msnb

    文章当中的编辑代码的软件叫什么?应该不是记事本吧?

    qi 回复:

    不是记事本,是NotePad++

    这是农场的第 10 块农田,部落批准 [msnb] 在[2011-11-25 10:20]开垦完成.
  • 恰恰

    WordPress的定制性果然高,怪不得现在越来越多的公司也用 WordPress来建站了。

    这是农场的第 11 块农田,部落批准 [恰恰] 在[2011-11-25 10:57]开垦完成.
  • 老男孩博客 4

    有没有插件的啊,这个要自己修改代码的。

    qi 回复:

    呵呵,这样一个小功能,一般添加代码就可以了。貌似没有这样的插件。

    四叶草 回复:

    @老男孩博客, 能不用插件则尽量不用插件

    这是农场的第 12 块农田,部落批准 [老男孩博客] 在[2011-11-25 11:25]开垦完成.
  • 深圳印刷公司 1

    这个博客现在还能下载吗

    这是农场的第 13 块农田,部落批准 [深圳印刷公司] 在[2011-11-25 16:23]开垦完成.
  • 倾国倾城

    用Wordpress就是要有折腾的精神。我记得有一个插件好像可以实现这个功能。

    这是农场的第 14 块农田,部落批准 [倾国倾城] 在[2011-11-25 19:05]开垦完成.
  • 原来是插件的优先级的问题,怪不得我添加的没有效果呢。

    这是农场的第 15 块农田,部落批准 [烌] 在[2011-11-25 19:08]开垦完成.
  • 众业达

    Function.php中的这个代码是不是可以直接添加到Single.php当中?

    这是农场的第 16 块农田,部落批准 [众业达] 在[2011-11-25 21:33]开垦完成.
  • 四叶草

    我的主题好像有这个功能。

    qi 回复:

    一般主题都有这么一个功能。最基本的。

    这是农场的第 17 块农田,部落批准 [四叶草] 在[2011-12-3 16:27]开垦完成.
  • chheaon

    博主可否按你的这篇排版写一个wordpress教程啊。很多东西我一样画葫芦都很难操作,小白啊。。。特别是本文中出现的代码- -!

    qi 回复:

    你是说这个添加上下一篇吗?

    这是农场的第 18 块农田,部落批准 [chheaon] 在[2012-1-31 20:21]开垦完成.
  • 走出迷失

    能不能简单点,直接说步骤,不用写理由!我按照你的尝试了,总是出错!

    qi 回复:

    提示什么错误?我来帮你解决。

    走出迷失 回复:

    @qi,
    以下是我的single.php的代码,已经实现上下一篇的显示,我想显示同一分类下的。我按照你的插入,单独的文章打不开。

    <section id="post-” >

    , , by , .

    <?php the_content();
    wp_link_pages('before=&after=&next_or_number=number&pagelink=%’);?>

    <?php edit_post_link(__('Edit','iLost'),' [‘,’]’);?>

    如果插入到function.php,博客直接打不开!

    qi 回复:

    你好,这篇文章的代码只能添加到single.php中的,不能够添加到Function.php中,因为它不是函数。文章中说实现同分类下的上一篇和下一篇,是说在每一篇文章的后面,不是分类的后面。

    这是农场的第 19 块农田,部落批准 [走出迷失] 在[2012-3-22 11:22]开垦完成.
  • Sam 2

    新手,正在學做博客中。。。。

    这是农场的第 20 块农田,部落批准 [Sam] 在[2012-4-15 14:45]开垦完成.
  • Sam 2

    求解:我把代碼添加到single.php中但是沒有效果的?

    qi 回复:

    @Sam, 有没有提示错误之类的信息?

    这是农场的第 21 块农田,部落批准 [Sam] 在[2012-4-15 15:34]开垦完成.
  • Sam 2

    就是提示:single.php找不到;而且连文章都打不开的

    qi 回复:

    @Sam, 那就是添加代码错误了。检查一下,看看有哪里有错误。

    这是农场的第 22 块农田,部落批准 [Sam] 在[2012-4-15 18:41]开垦完成.
  • Sam 2

    黏贴在single.php中下面就行了?

    这是农场的第 23 块农田,部落批准 [Sam] 在[2012-4-15 18:56]开垦完成.
  • Sam 2

    将:

    黏贴在single.php中下面就行了?

    这是农场的第 24 块农田,部落批准 [Sam] 在[2012-4-15 18:58]开垦完成.
  • Sam 2

    又出现这样的提示了:
    Parse error: syntax error, unexpected ‘:’ in /home/vhosts/happystar.xp3.biz/wp-content/themes/stand-alone-10/single.php on line 34

    qi 回复:

    @Sam, 是放在single.php下面就行了,不过,你可能要找对位置,一般在wp-content这个部分下面。你是不是放错了地方?

    这是农场的第 25 块农田,部落批准 [Sam] 在[2012-4-15 19:05]开垦完成.
  • 冯立彬的博客

    博主这个太麻烦了,看一下这个:https://www.fenglibin.com/get_pre_and_next_page_url_in_wordpress.html

    qi 回复:

    @冯立彬的博客, 这个功能不错,而且很方便。我已经更新在文章里面了。

    这是农场的第 26 块农田,部落批准 [冯立彬的博客] 在[2012-7-19 14:59]开垦完成.
  • 2

    请问您说的在Single.php中添加如下代码

    那Single.php智能光哪个代码后添加呢?
    怎样让上下篇链接出现在评论前呢?而不是出现在页面末端

    qi 回复:

    @久, 你好,找到the_content这一行,在这一行下面添加我说的代码,就可以实现你的要求。

    久 回复:

    @qi, Single.php里找不到the_content这一行,怎么回事呢

    qi 回复:

    @久, < ?php if (have_posts()) : while (have_posts()) : the_post(); ?>,能找到这句吗?

    久 回复:

    @qi,

    最接近的只有这句了

    qi 回复:

    @久, 没有看到代码,你播放代码时点击“插代码”,在中间输入代码就可以显示。

    久 回复:

    @qi, 这个代码

    qi 回复:

    @久, 代码又添加失败了。

    久 回复:

    @qi, 我是按照您的要求在插入码中添加了

    qi 回复:

    @久, 那就怪了。你把代码换成纯文本吧。不要用php语言就应该会显示出来。可能是我的评论有些问题。

    久 回复:

    @qi, 可以吗

    qi 回复:

    @久, 看来还是没有代码,直接联系我QQ吧。我来帮你。

    久 回复:

    @qi,是 798558110这个Q吗 我发信息 没人呢?

    这是农场的第 27 块农田,部落批准 [久] 在[2012-7-25 22:54]开垦完成.
  • 2

    是 798558110这个Q吗 我发信息 没人呢?

    qi 回复:

    @久, 是我的,我马上上QQ,看你的消息。白天好少上QQ。

    这是农场的第 28 块农田,部落批准 [久] 在[2012-7-26 15:52]开垦完成.
  • jackjones 1

    学习学习。
    怎么加,
    我加了怎么不成功

    这是农场的第 29 块农田,部落批准 [jackjones] 在[2012-10-14 17:32]开垦完成.
  • jackjones 1

    为什么我加上去了,点击文章,《上一篇》《下一篇》显示在文章顶部,而不是显示在文章的底部?有什么办法能让他显示在底部吗?
    我是在Single.php的 ?php if (have_posts()) : while (have_posts()) : the_post(); ?>后面加的。

    qi 回复:

    @jackjones, 有可能是你的主题的文章内容还在后面几段代码,你试着将分页代码放在后面几句看看。如果不行,可以放上你的代码,我来分析一下。

    这是农场的第 30 块农田,部落批准 [jackjones] 在[2012-10-14 17:45]开垦完成.
  • jackjones 1

    这个是我的 (single.php)文件的所有代码,我已经把显示上下篇的代码加进去了。请你看看是怎么回事

    term_id);
    }
    $categoryIDS = implode(“,”, $categoryIDS);
    ?>

    <A href="”>
       时间:
      分类:

    相关文章:

    ID);
    if ($tags) {
    $first_tag = $tags[0]->term_id;
    $args=array(
    ‘tag__in’ => array($first_tag),
    ‘post__not_in’ => array($post->ID),
    ‘showposts’=>10,
    ‘caller_get_posts’=>1
    );
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
    <a href="” title=””>

    qi 回复:

    @jackjones, 那就把分页代码加在while ($my_query->have_posts()) : $my_query->the_post(); ?>后面几行,具体的因为看不到你后面的代码,所以还需要你亲自测试一下。

    jackjones 回复:

    @qi, 好了。谢谢。
    对了,你会改wp程序吗?想请教。我已经加了你的qq了。

    qi 回复:

    @jackjones, 会修改一些WP主题,WP核心程序这方面暂时不会。你QQ是多少?

    这是农场的第 31 块农田,部落批准 [jackjones] 在[2012-10-15 13:15]开垦完成.
  • jackjones 1

    我的QQ是 351587990

    qi 回复:

    @jackjones, QQ已加,回复了。

    这是农场的第 32 块农田,部落批准 [jackjones] 在[2012-10-15 23:09]开垦完成.
  • jackjones 1

    你好,我回复你的QQ都没人回答的,就是想请教一下wp程序的修改
    还有sidebar.php这个里面的代码修改。我想增加一个文章归档,显示年月日,星期几的那个。增加了几次都失败,不知道是什么问题。
    我现在这个sidebar.php里面已经有网站分类,最新文章,Tags,随机文章,最新评论,友情链接

    qi 回复:

    @jackjones, 1、插件法,WP-EasyArchives 3.0不错,https://www.neoease.com/wordpress-archives-plugin-3-0/,看看满足你的要求不。2、代码法,这个方法有些复杂,https://www.ludou.org/make-archives-of-wordpress-easily.html,不过我看了好多的代码方法,都没有显示星期几的分类。

    这是农场的第 33 块农田,部落批准 [jackjones] 在[2012-10-18 16:22]开垦完成.
  • hel

    非常不错,想问以下,怎么只显示上一页和下一页,然后鼠标放上去能显示title呢?谢谢楼主了

    这是农场的第 34 块农田,部落批准 [hel] 在[2013-4-12 10:07]开垦完成.
  • 华夏中文

    请问这个怎么改成只获取文本型的链接地址,而不是整个超链接?

    这是农场的第 35 块农田,部落批准 [华夏中文] 在[2013-6-17 13:52]开垦完成.
  • 网民

    我用了第四章方法,博客直接打不开了,用了以上几种,文章每次#页的时候播放器音乐就重置了,求解决方法

    qi 回复:

    @网民, 这个查一下是不是没有这个链接地址?

    这是农场的第 36 块农田,部落批准 [网民] 在[2016-2-1 00:01]开垦完成.
  • 狂族晨曦 3

    没人发现文章中的代码,只有前面两次写的是“上一篇”、“下一篇”,到后面就一直写的“上一篇”、“上一篇”吗?

    这是农场的第 37 块农田,部落批准 [狂族晨曦] 在[2016-3-21 23:30]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部