WordPress文章页只显示同栏目的上一篇和下一篇文章

2015-08-23

1、最常见的方式,直接调用:

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

2、当文章处于首篇或尾篇的时候,就会呈现空白。下面通过增加判断来解决这个问题。

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

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

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

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

相关说明如下:
$format:格式化被显示的字符串,缺省值是”‘« %link”,第二个函数缺省值是”%link »”。
$link:被显示的字符串,缺省值是上一篇或下一篇的”$title”,也可以设置为其它你想显示的字符串。
$in_same_cat :表示是显式同一类别下的文章还是不区分类别的文章,缺省值false表示不区分类别,只以发帖的时间先后来确定。
$excluded_categories:表示在显示上一篇或下一篇时是否排除掉某分类,缺省不排除,如果排除,把分类ID列在此处,以英文逗号分隔。

于是相信大家都看出来了,实现同分类下的上一篇、下一篇链接,只要在上面的基础上添加一个判断: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 "没有了,已经是最新文章";} ?>

但是这里也有一个问题就是当指定了同分类下的上一篇、下一篇时,会依然显示空白,而不是输出代码中的“已经是最后文章”,所以我们还需要给特定的分类下指定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 "没有了,已经是最新文章";} ?>

文章参考:http://www.2cto.com/kf/201309/247115.html

发表评论

邮箱地址不会被公开。 必填项已用*标注