一般调用时间都是直接使用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() 函数即可。