WordPress让时间格式显示为几分钟几小时几天前
我们在浏网站或论坛的时候,经常会看到此文章或评论发布于几分钟前、几小时前、几天前这样的微时间格式,那么在wordpress中显示这种格式的时间该如何实现呢?WordPress让时间格式显示为几分钟几小时几天前一般调用时间都是直接使用time()函数,为了让时间格式以更为科学的方式显示,WordPress默认调用的是the_time()函数,可以通过给the_time()添加一个 filter来显示修改后的时间,在 function.php 文件中添加如下代码。
添加 filter 方式
function timeago(){
$time_diff = current_time('timestamp') - get_the_time('U'); //计算两个日期之间的秒数差
if ($time_diff <= 86400 * 7) { // 判断日期差是否在一周之内
if ($time_diff <= 300) { //5分钟之内
echo '刚刚'; //显示刚刚
} elseif ($time_diff <= 86400) { //24小时之内
echo human_time_diff(get_the_time('U'), current_time('timestamp')) . '前'; //显示几小时前
} else {
$days = 0;
if (get_the_time('m') != current_time('m')) { // 如果不跨月
$days = daysInmonth1(get_the_time('y'), get_the_time('m')); // 计算上个月总共有多少天
}
$s = current_time('d') + $days; // 计算天数差时要加上上个月的总天数
$m = get_the_time('d');
if ($m == $s - 1) {
echo '昨天'; // 显示昨天
} else {
echo $s - $m - 1 . '天前'; //显示几天前
}
}
} else {
if (get_the_time('Y') == current_time('Y')) {
echo the_time('m月d日');
} else {
echo the_time('Y年m月d日');
}
}
}
add_filter('the_time',timeago');
自定义函数,本文推荐
首先,在我们所使用主题的 functions.php 新定义一个方法。
function timeago( $ptime ) {
date_default_timezone_set ('ETC/GMT');
$ptimes = strtotime($ptime);
$etime = time() - $ptimes;
if($etime < 1) return '刚刚';
$interval = array (
12 * 30 * 24 * 60 * 60 => '年前 ('.date('Y-m-d', $ptime).')',
30 * 24 * 60 * 60 => '个月前 ('.date('m-d', $ptime).')',
7 * 24 * 60 * 60 => '周前 ('.date('m-d', $ptime).')',
24 * 60 * 60 => '天前',
60 * 60 => '小时前',
60 => '分钟前',
1 => '秒前'
);
foreach ($interval as $secs => $str) {
$d = $etime / $secs;
if ($d >= 1) {
$r = round($d);
return $r . $str;
}
};
}
然后,在需要显示微时间的地方调用即可。
文章发布时间格式修改使用方法:
把原先显示时间的代码改为以下代码即可:
<?php echo timeago(get_gmt_from_date(get_the_time('Y-m-d G:i:s'))); ?>
评论发布时间格式修改使用方法:
把原先显示时间的代码改为以下代码即可:
<?php echo timeago(get_gmt_from_date(get_comment_date('Y-m-d G:i:s'))); ?>
写笔记
- 文章目录