wordpress中添加上一页、下一页按钮的方法

在wordpress博客中,要实现添加上一页,下一页按钮,方法是非常简单的。具体的实现效果可以移步我的个人博客

如果只是单纯获取链接,只需如下代码即可:

<?php
previous_post_link(“上一篇: %link”,””,true);
next_post_link(“下一篇:%link”,””,true);
?>


其中函数中第一变量为显示的格式化字符串,第二个为显示的文本内容,第三个布尔型变量表示是否将文本内容显示为默认的文章标题。将代码放到合适的地方就添加完成了,但是会有一些问题,比如阅读到最后一篇文章的时候,显示下一篇文章的位置就成了空白了,我们需要让它显示诸如”已经是最后一篇了”之类的词语,因此我们加上一个判断是否还有上(下)一篇文章的判断:

if (get_previous_post()) ….. else echo “已经是最早的日志了。”

if (get_next_post()) ….. else echo “已经是最新的日志了。”
 

这个问题解决了,还有一个很实际的问题,我们的文章往往是按照不同类别分类好了,而上述函数实现的算法是根据文章的id去排序,而这样的话直接获取的下一篇文章就可能不是同一类别的,那应该怎么办呢?我们打开/wp-content/link-template.php文件查看函数代码,源文件如下:

function get_previous_post( $in_same_term = false, $excluded_terms = ”, $taxonomy = ‘category’ ) {
return get_adjacent_post( $in_same_term, $excluded_terms, true, $taxonomy );
}

/**
* Retrieve next post that is adjacent to current post.
*
* @since 1.5.0
*
* @param bool         $in_same_term   Optional. Whether post should be in a same taxonomy term.
* @param array|string $excluded_terms Optional. Array or comma-separated list of excluded term IDs.
* @param string       $taxonomy       Optional. Taxonomy, if $in_same_term is true. Default ‘category’.
* @return mixed       Post object if successful. Null if global $post is not set. Empty string if no corresponding post exists.
*/

因此我们发现这个函数是有参数的,下面的注释也写的很清楚,第一个$in_same_term表示是否获取在同样目录的文章,因此我们在调用的时候只需传递参数true进去,就能解决问题了。 同时我们还看到后面还有几个参数,比如第二个参数,我们可以传递一个字符串,里面包含了我们想排除掉的分类目录进去,中间以逗号隔开,因此对于上面的要求,我们也可以按以下代码去实现:

$categories = get_the_category();$categoryIDS = array();
foreach ($categories as $category) {
array_push($categoryIDS, $category->term_id);  #将目录的id写入数组
}
$categoryIDS = implode(“,”, $categoryIDS);   #将数组中的内容整合为一个字符串,中间以逗号隔开
if (get_previous_post($categoryIDS )) ….#后面省略


 这样实现稍微麻烦了一点,不过这个思路可以让我们去实现一些更特殊的需求。比如指定的排除某些目录等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值