这个是今天用到的,之前一直没有用到过,将文章发表时间显示为 多长时间前,一般24小时内的可能会这样显示的比较多点,一些资讯站之类的。个人博客应该很少用得到;正好今天看得时候用到,做个记录。

先是把以下代码放入functions.php文件的最后一个?>之前:

function my_time($older_date, $newer_date = false) {
    $chunks = array(
    array(60 * 60 * 24 * 365 , 'year'),
    array(60 * 60 * 24 * 30 , 'month'),
    array(60 * 60 * 24 * 7, 'week'),
    array(60 * 60 * 24 , '天'),//这个地方会在调用时显示出来
    array(60 * 60 , '小时'),
    array(60 , '分钟'),
    array(1 , '秒'),
    );
    $newer_date = ($newer_date == false) ? (time()+(60*60*get_settings("gmt_offset"))) : $newer_date;
    $since = abs($newer_date - $older_date);
    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 == 1) ? '1 '.$name : "发表于$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 == 1) ? ', 1 '.$name2 : "";
            }
        }
    if ($newer_date - $older_date<0) {
        return "after".$output;
    } else {
        return $output."前";
    }
    }

调用,有判断,24小时内的会显示为多长时间前发布,超过会显示日期。

<?php $diff=60*60*24;if (function_exists('my_time') && (time()-get_the_time('U'))<$diff) {
	echo my_time(abs(strtotime($post->post_date_gmt . "GMT")), time());
	} else {
		the_time('m-d');
	 }
?>