WordPress文章中添加上一篇、下一篇链接专题研究
因为现在写文章都是关注一个话题的,所以一般地几篇文章下来,都是围绕一个中心话题来展开的。例如就像大家最近看到了几篇文章一样,英文网赚中介绍了广告联盟amazon.com,然后又谈到了Wordpress插件应用。
一般我都会在文章末尾中告诉下一篇文章的内容是什么,但是这里有一个问题就是,像免费资源部落这样的CMS主题型的Wordpress,一般下一篇的内容可能是另外一个分类的,所以直接给出来下一篇链接,可能是与本分类无关的。
于是我就想到在每篇文章末尾加上上一篇、下一篇链接,并且要求显示的本篇文章所在分类的上一篇、下一篇文章,这样当我在文章当中提示下一篇文章时,读者应该很容易找到相关内容了。
这次制作了这个Wordpress文章中添加上一篇、下一篇链接专题研究,你可以从文章当中了解到如何在文章内页当中上一篇、下一篇链接,显示特定的分类下的上一篇、下一篇,以及利用add_filter随心所欲地在文章开头或者结尾添加内容。
本篇文章适合那些WordPress新手,当然你如果是一个Wordpress折腾户,下面的免费教程一定不要错过:
- 1、WPZonBuilder专为Amazon.com联盟打造的WordPress插件(Wordpress不仅用来写博客还是用来赚钱的)
- 2、WordPress整合问答程序Question2Answer:安装使用测评(Wordpress没有的功能可以通过整合来获取)
- 3、WordPress与Discuz! X2整合教程:WP Ucenter插件与积分兑换(Wordpress也可以与国内的DZ论坛程序整合)
WordPress文章中添加上一篇、下一篇链接专题研究
1、这个方法几乎在所有的Wordpress主题中都可以看得到。一般是在Single.php文件中文章内容下方添加以下代码即可,如果你没有这个功能,可以自己添加。如下:
- <?php previous_post_link('上一篇: %link') ?>
<?php next_post_link('下一篇: %link') ?>
2、这样添加的话,有一个非常大的问题就是如果是第一篇文章,或者是最后一篇文章,会出现上一篇,或者下一篇空白,如下图:
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(); ?>,紧临其后添加,如下图:
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解决了与缩略图插件、投票插件的冲突关系,保证了上一篇、下一篇在紧临文章后面):
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
文章出自:免费资源部落 / 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
您或许对下面这些文章有兴趣: 本月吐槽辛苦排行榜
-
这个上一页下一页的功能,几乎所有的Wordpress都已经自带了吧。分类下的上一页,下一页,倒是非常有用,尤其是对于那些CMS分类是相当好的。
[回复] -
WordPress这个功能还是挺实用的。配置一下JS和CSS,就可以整出漂亮的阅读效果出来了。
[回复] -
add_filter我一般用来添加广告代码的,不过用在这里也不错。方便快捷。
[回复] -
原来add_filter还有做优先级呀,Wordpress的代码果然精深。
[回复] -
呵呵 又学习了一点,给收藏下来备用学习了!
[回复] -
这个分类下的WP上下页链接方法不错,一般地Wordpress只是按照时间来排列的。
[回复] -
WordPress的定制性果然高,怪不得现在越来越多的公司也用 WordPress来建站了。
[回复] -
这个博客现在还能下载吗
[回复] -
用Wordpress就是要有折腾的精神。我记得有一个插件好像可以实现这个功能。
[回复] -
原来是插件的优先级的问题,怪不得我添加的没有效果呢。
[回复] -
Function.php中的这个代码是不是可以直接添加到Single.php当中?
[回复] -
能不能简单点,直接说步骤,不用写理由!我按照你的尝试了,总是出错!
[回复]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,博客直接打不开!
[回复] -
新手,正在學做博客中。。。。
[回复] -
黏贴在single.php中下面就行了?
[回复] -
-
学习学习。
怎么加,
我加了怎么不成功[回复] -
这个是我的 (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=””>[回复] -
你好,我回复你的QQ都没人回答的,就是想请教一下wp程序的修改
还有sidebar.php这个里面的代码修改。我想增加一个文章归档,显示年月日,星期几的那个。增加了几次都失败,不知道是什么问题。
我现在这个sidebar.php里面已经有网站分类,最新文章,Tags,随机文章,最新评论,友情链接[回复] -
非常不错,想问以下,怎么只显示上一页和下一页,然后鼠标放上去能显示title呢?谢谢楼主了
[回复] -
请问这个怎么改成只获取文本型的链接地址,而不是整个超链接?
[回复] -
没人发现文章中的代码,只有前面两次写的是“上一篇”、“下一篇”,到后面就一直写的“上一篇”、“上一篇”吗?
[回复]