WordPress 显示评论、文章相对时间

评论(9)

昨天折腾了个文章、评论显示相对时间,原理就不再赘述了,不明白原理的可以从下面的传送门进入,为了增强鄙人编写代码的能力,为了能理论联系实际,为了能造福万民,所以我把显示相对时间的函数做了一下封装,这样不管在任何主题任何地方,只要直接调用函数名加参数值就可以显示评论或文章的相对时间了,这样还不算授人鱼?

原理教程传送门:《改善你的 WordPress 文章、评论时间显示》
根据昨天的版本设置今天的这个应该算是高中版吧,因为要达到效果还是需要在主题里添加代码,所以还是没到大学,哈哈。
函数代码如下:

相对时间函数

if ( ! function_exists( 'xz_time' ) ) :
/**
 * 显示文章、评论相对时间的封装函数.
 *作者:XiangZi  http://PangBu.com/
 * @param $type 类型字符串  'cmt'或'art',用于定义显示的是评论时间还是文章时间。
 * @param $ago_time 数字类型 用于定义显示相对时间的时间限制 默认为86400秒即一天。
 * @param $after 字符串型 显示在相对时间之后的文字,默认为  ' - ago'
 * @param $late 字符串型 超过时间限制后显示的项目,默认为 get_the_time('Y/n/j - H:i')或get_comment_time('Y/n/j - H:i')
 * @return 返回字符串(相对时间或绝对时间)
*/
function xz_time ( $type = 'art', $ago_time = 86400  ,$after = ' - ago' , $late = '' ) {
    if ( $type === 'cmt' ){
        $diff = (int) abs( get_comment_time('U') - current_time('timestamp'));
           if ( (!$late) || $late ==''){ $late = get_comment_time('Y/n/j - H:i');};
    }
    if ( $type === 'art' ){
        $diff = (int) abs( get_the_time('U') - current_time('timestamp'));
        if ( (!$late) || $late ==''){$late = get_the_time('Y/n/j - H:i');};
    }
    if ( $diff <= 3600 ) {
        $mins = round($diff / 60);
        if ($mins <= 1) {
            $mins = 1;
        }
        /* translators: min=minute */
        $since = sprintf(_n('%s Min', '%s Mins', $mins), $mins);
    } else if (($diff <= 86400) && ($diff > 3600)) {
        $hours = round($diff / 3600);
        if ($hours <= 1) {
            $hours = 1;
        }
        $since = sprintf(_n('%s Hour', '%s Hours', $hours), $hours);
    } elseif ($diff >= 86400) {
        $days = round($diff / 86400);
        if ($days <= 1) {
            $days = 1;
        }
        $since = sprintf(_n('%s Day', '%s Days', $days), $days);
    };
    $since .= $after ; 
    return $diff < $ago_time ? $since : $late ;
}endif;

使用方法

将上述代码插入到你主题的function.php文件中
然后在你想显示相对时间的地方调用该函数即可。
函数最少输入设定一个参数 即$type 类型字符串  ‘cmt’(评论时间)或’art’(文章时间)
示例:

//最简单的调用
echo xz_time('cmt');
//一天内的输出结果:  3 Hours-ago 
//一天后的输出结果:  2011/12/26 - 20:01
 
 
//调用时长为2天内的相对时间,之前时间显示默认时间
echo xz_time('cmt',172800);
//2天内的输出结果:  3 Hours-ago 
//2天后的输出结果:  2011/12/26 - 20:01
 
 
//调用时长为2天内的相对时间,相对时间之后显示 '之前的评论'
echo xz_time('cmt',172800,'之前的评论');
//2天内的输出结果: 3 Hours 之前的评论 
//2天后的输出结果:  2011/12/26 - 20:01
 
//调用时长为2天内的相对时间,之前时间显示为 年-月-日
echo xz_time('cmt',172800,'之前的评论',get_comment_time('Y-n-j'));
//2天内的输出结果: 3 Hours 之前的评论 
//2天后的输出结果:  2011/12/26

主机今天抽筋,好慢啊,所以就写到这吧。

感想

空间又开始抽了。





  1. 其实我看得很迷迷糊糊,因为我是个不懂程序的seo

  2. 支持一下!很不错:-P

  3. 这个功能还挺有意思的,评论发表时间看起来很清楚

  4. 过来支持一下,欢迎回访!

  5. 不错,有创新就有收获

  6. 哈哈,跟着朋友学习

  7. @wind
    呵呵,恭喜!

  8. 哇塞,我居然是沙发啊

  9. Pingback: 改善你的 WordPress 文章、评论时间显示 | 主题 - WordPress