今天在看阿里百秀的网站时,发现有一个比较贴心的功能,如下图,文章发布的日期可以随着文章新鲜度的不同而变化,比如今天发表的文章,发布时间具体到某一分钟,而昨天发布的文章,直接显示昨天,再往前,就直接显示日期了。
个人觉得这种方式的用户体验非常好,于是简单的研究了一下实现方法。实现起来其实还是比较简单的,首先获取文章发布的时间,然后获取当前的时间,比较这两个时间,然后判断文章发布时间的显示方法,代码如下。
<?php
$post_time = get_the_time('U');
$now = current_time('timestamp');
$diff = (int) abs( $post_time - $now );
$days = round( $diff / DAY_IN_SECONDS );
?>
<?php if($days < 1){?>
<time class="new"><?php the_time("A g:i"); ?></time>
<?php }elseif($days == 2){ ?>
<time class="prev">昨天</time>
<?php }else{?>
<time class="new"><?php the_time("m-d"); ?></time>
<?php }?>
直接把以上代码复制到你需要显示的地方就可以了,当然,我们也可以把以上功能写成一个函数,这样调用起来就不用重复这么多代码了,模板看起来也会比较简洁一点。
根据文章新鲜度调整时间显示方式的函数
有小伙伴提问,怎么把上面的功能写成函数的方式,好吧,为了方便大家,直接写成函数贴出来了。
function wizhi_human_time(){
$post_time = get_the_time('U');
$now = current_time('timestamp');
$diff = (int) abs( $post_time - $now );
$days = round( $diff / DAY_IN_SECONDS );
if($days < 1){
echo '<time class="new">' . the_time("A g:i") . '</time>';
}elseif($days == 2){
echo '<time class="prev">昨天</time>';
}else{
echo '<time class="new">' . the_time("m-d") . '</time>';
}
}
把上面的函数粘贴到主题的functions.php
中,然后在需要的地方这样调用:
<?php wizhi_human_time(); ?>