update 下文代码已经修改,可以实现人性化显示日志和回复的发表时间
通常的日志发表时间都显示为年月日的形式,这个方法是把它改成显示为几小时前、几天前或者几年前的形式,如我测试的时候是显示为This entry was posted 9 months ago,然后将回复的时间改成日志发表后多长时间回复的形式。代码是一个老外的博客上看到的,我测试了可以用,不过我是想时间超过24小时就显示为正常的年月日,可是本人不懂php,不知道怎么修改,只好放弃不用,发出来给感兴趣的人用了。
在主题文件夹下的function.php文件里最底部的 ?>前加入以下代码:
<?php
function time_since($older_date, $newer_date = false)
    {
    $chunks = array(
    //因为在24小时以外的我需要显示正常时间,所以这里用不到/年/月/周/天,需要的同学可以去掉以下注释符
    //array(60 * 60 * 24 * 365 , '年'),
    //array(60 * 60 * 24 * 30 , '月'),
    //array(60 * 60 * 24 * 7, '周'),
    //array(60 * 60 * 24 , '天'),
    array(60 * 60 , '小时'),
    array(60 , '分钟'),
    );
    $newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date;
    $since = $newer_date - $older_date;
    //当前时间与发布时间差,这里我取86400秒,即24小时
    if($since < 86400)
        {
        //显示时间的前半部分
        for ($i = 0, $j = count($chunks); $i < $j; $i++)
            {
            $seconds = $chunks[$i][0];
            $name = $chunks[$i][1];
            if (($count = floor($since / $seconds)) != 0)
                {
                break;
                }
            }
        $output = "$count {$name}";
        //显示时间的后半部分
        if ($i + 1 < $j)
            {
            $seconds2 = $chunks[$i + 1][0];
            $name2 = $chunks[$i + 1][1];
            if (($count2 = floor(($since - ($seconds * $count)) / $seconds2)) != 0)
                {
                $output .= ", $count2 {$name2}";
                }
            }
        return $output." 前";
        //在24小时以外的时间显示格式
        }else{
            the_time('Y-m-j G:i');
            }
    }
?>
然后在你需要显示时间的地方用下面的代码替换,日志部分:
<?php if (function_exists('time_since')) {
echo time_since(abs(strtotime($post->post_date_gmt . "GMT")), time()) . " ago";
} else {
the_time('F jS, Y');
} ?>
判断语句是为了防止function.php文件里没加入那代码时无法显示,如果确认有加,可以去掉这个判断,看起来会更简洁点。
然后在comments.php里将回复的时间的地方替换成下面的代码,(这个可能有点麻烦,现在主题很少comments.php文件独立写了,都是调用wp默认的,只有单独写代码的才有的改):
<?php if (function_exists(‘time_since’)) {
echo time_since(abs(strtotime($comment->comment_date_gmt . “ GMT”)), time()) . “ ago”;
} else {
the_time(‘F jS, Y’);
} ?>
谁有24小时内倒序显示时间的方法分享一下,谢谢!
以上function.php部分代码由万戈修改:http://wange.im/show-time-since-in-wordpress.html
THE END
	







为什么放到function.php 里面就打不开页面.....
加到function里得时候前后的php ?>要去掉。
那个已经过时了,看这个http://muxer.cn/625.html
越来越感觉到最好的内容都是来自博客。好久都不逛论坛了。
从万兄那跑来深究~~
这个想法不错,有点像论坛回复时间的样子了,呵呵
要不你去整一个出来分享下?!
今天从gg reader中回顾了这篇日志,刚刚整出来了~
http://wange.im/show-time-since-in-wordpress.html