WordPress 本身调用时间的函数 the_time() 只能直接调用时间,通过他的 filter,我们可以让他显示为比较科学的几天前格式。
将下边的代码丢到 function.php 的最后一个 ?> 前即可。
/**
* WordPress 修改时间的显示格式为几天前
* https://www.wpdaxue.com/time-ago.html
*/
function Bing_filter_time(){
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(_n('%s 分钟', '%s 分钟', $mins), $mins) . __( '前' , 'Bing' );
}
else if (($diff <= 86400) && ($diff > 3600)) {
$hours = round($diff / 3600);
if ($hours <= 1) {
$hours = 1;
}
$time = sprintf(_n('%s 小时', '%s 小时', $hours), $hours) . __( '前' , 'Bing' );
}
elseif ($diff >= 86400) {
$days = round($diff / 86400);
if ($days <= 1) {
$days = 1;
$time = sprintf(_n('%s 天', '%s 天', $days), $days) . __( '前' , 'Bing' );
}
elseif( $days > 29){
$time = get_the_time(get_option('date_format'));
}
else{
$time = sprintf(_n('%s 天', '%s 天', $days), $days) . __( '前' , 'Bing' );
}
}
return $time;
}
add_filter('the_time','Bing_filter_time');
上边的代码可以让 30 天内发布的文章显示为几天前,而过了 30 天即显示为正常的标准格式日期。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
想显示提前几个月怎么改上面的代码
同样的问题
新发布文章显示为8小时前
想问一下博主,为啥我网站的Wordpress文章每次新发布的时间为8小时前,UTC的时间比本地的少八个小时,Wordpress里已经修改为UTC+8了还是不可以
服务器时间的问题,请联系主机商或给你配置环境的人
还是来博主这学东西靠谱
$time = sprintf(_n(‘%s 分’, ‘%s 分种’, $mins), $mins) . __( ‘前’ , ‘Bing’ );
错了一个字
已修复,谢谢
其实我改的没见效果,
老大
我用的是wp3.8 使用这篇文章代码后效果是这样的:
新发布文章显示为8小时前
然后在7,6,5小时前…
请问一下是怎么回事??
你的问题解决了吗
新发布文章显示为8小时前
然后在7,6,5小时前…这样的。
分种(钟)?
不错,以后用得着