一般调用时间都是直接使用time()函数,为了让时间格式以更为科学的方式显示,我们可以采用filter过滤器来添加几分钟前、几小时前或几天前这样的形式。让30天内发布的文章显示为几天前,一旦过了30天则显示为正常的标准格式日期。
添加到functions.php里面
add_filter('the_time','time_ago');
function time_ago(){
global $post ;
$to = time();
$from = get_the_time('U') ;
$diff = (int) abs($to - $from);
if ($diff <= 3600) {
$mins = round($diff / 60);
if ($mins <= 1) {
$mins = 1;
}
$time = sprintf('%s 分钟前', $mins);
}
elseif (($diff <= 86400) && ($diff > 3600)) {
$hours = round($diff / 3600);
if ($hours <= 1) {
$hours = 1;
}
$time = sprintf('%s 小时前', $hours);
}
elseif ($diff >= 86400) {
$days = round($diff / 86400);
if ($days <= 1) {
$days = 1;
$time = sprintf('%s 天前', $days);
}
elseif( $days > 29){
$time = get_the_time(get_option('date_format'));
}
else{
$time = sprintf('%s 天前', $days);
}
}
return $time;
}
这样一来我们只需要在显示时间的地方输出 time() 函数即可。

