很多博客都喜爱用 评论宣布于 “XXX 分钟 之前”、文章宣布于 “XXX 分钟 之前”来显示文章评论的工夫,改善的工夫显示形式不只能很直观的通知读者这篇文章或评论宣布距今已有多长工夫,更能加强评论回复的工夫感,哥很喜爱,由于前一阵子压在手里的货色太多了,工作日白昼又苦于不能上网,所以主题的款式及性能局部一点一点的写拖了好长工夫,最近这阵子刚好轮到折腾评论了,所以就逐渐参照网下流行的款式一点一点的修正起来本人的评论款式和性能。
So…..
Go…..
交道麻袋…..评论日期和文章日期调用函数不同,上面以评论日期为例,文章日期请自行调整。
改善的工夫显示形式的原理
很简略,就是经过 WordPress 的一个内置的函数解决如今的工夫和文章、评论宣布的工夫差,显示距今有X分钟、X小时、X天。
这个函数就是 human_time_diff ()
用法:
<?php human_time_diff( $from, $to ) ;?>
阐明:
判别两个工夫标志的差别。
以人类可浏览的格局,如“1小时”、“5分钟”、“两天”,前往$from和$to 两个工夫变量的工夫差。
从英文上也很好了解:from 到 to 嘛。(这句是很废吧,哈哈。)
雏形版改善完成
//将你的评论工夫显示的函数改成如下就能够了
<?php echo human_time_diff( get_comment_time('U') , current_time('timestamp')) ;?>
一切的日期都计算工夫差,很暴力吧?
**版的完成方法
简略的加一个判别,假如评论工夫没有超越**则显示XX小时之前,假如超越**则显示原始日期。
这样比拟兽性化吧?总不能让读者总掰着指头算38天之前是什么日子吧?哈哈!
代码:
<?php
//计算能否超越** 注:86400是**的总共的秒数 60秒X60分X24小时=86400秒
//假如感觉**不够的话,请自行计算填上。
if (current_time('timestamp') - get_comment_time('U') < 86400 )
//**之内显示的货色
{$cmt_time = human_time_diff( get_comment_time('U') , current_time('timestamp') ) . '-ago';}
//超越**这么显示
else{$cmt_time = get_comment_date( 'Y/n/j' ).' - '.get_comment_time('','',false);};
;?>
//将你的评论工夫显示的函数改成如下就能够了
<?php echo $cmt_time ;?>
加强版
那么咱们能不能再加强一下呢?
为什么加强?
好吧,由于我这集体比拟较真,感觉中文显示日期不难看,影响到我的排版,喜爱英文显示日期,而中文版的 WordPress 汉化的真的是没有死角(汉化的真细心),假如咱们间接用 human_time_diff 函数输入的话,中文版的 WordPress 会将后果全副汉化显示XX小时XX天之前,这样很有可能会影响咱们的排版,而且这个 human_time_diff 函数里既没有留钩子,也没有预留一个不汉化的参数,所以咱们想要显示英文的话,只有两个方法:
间接修正 human_time_diff 函数,让汉化生效,这样做太暴力,而且当前晋级了还要再出来改,伦家不喜爱。
重写一个本人的 human_time_diff 函数,绕过汉化。
function.php 外面强力拔出如下代码:
//原函数的 day hour min 都是小写的,
//我把这三个词的首写字母改成大写的,即Day Hour Min 就能够避开汉化了,你懂?
if ( ! function_exists( 'xz_time_diff' ) ) :
function xz_time_diff( $from, $to = '' ) {
if ( empty($to) )
$to = time();
$diff = (int) abs($to - $from);
if ($diff <= 3600) {
$mins = round($diff / 60);
if ($mins <= 1) {
$mins = 1;
}
/* translators: min=minute */
$since = sprintf(_n('%s Min', '%s Mins', $mins), $mins);
} else if (($diff <= 86400) && ($diff > 3600)) {
$hours = round($diff / 3600);
if ($hours <= 1) {
$hours = 1;
}
$since = sprintf(_n('%s Hour', '%s Hours', $hours), $hours);
} elseif ($diff >= 86400) {
$days = round($diff / 86400);
if ($days <= 1) {
$days = 1;
}
$since = sprintf(_n('%s Day', '%s Days', $days), $days);
}
return $since;
}endif;
工夫判别代码改为如下:
<?php
//只是把计算日期差别的函数名变了而已,其余同上。
if (current_time('timestamp') - get_comment_time('U') < 86400 )
{$cmt_time = xz_time_diff( get_comment_time('U') , current_time('timestamp') ) . '-ago';}
else{$cmt_time = get_comment_date( 'Y/n/j' ).' - '.get_comment_time('','',false);};
;?>
//将你的评论工夫显示的函数改成如下就能够了
<?php echo $cmt_time ;?>
显示评论、文章**工夫
依据下面的版本、上面的这个应该算是加强改良版吧,由于要达到成果还是需求在主题里增加代码,所以还没到**版,哈哈。
函数代码如下:
**工夫函数
if ( ! function_exists( 'xz_time' ) ) :
/**
* 显示文章、评论**工夫的封装函数.
*作者:XiangZi http://PangBu.com/
* @param $type 类型字符串 'cmt'或'art',用于定义显示的是评论工夫还是文章工夫。
* @param $ago_time 数字类型 用于定义显示**工夫的工夫限度 默许为86400秒即**。
* @param $after 字符串型 显示在**工夫之后的文字,默许为 ' - ago'
* @param $late 字符串型 超越工夫限度后显示的名目,默许为 get_the_time('Y/n/j - H:i')或get_comment_time('Y/n/j - H:i')
* @return 前往字符串(**工夫或相对工夫)
*/
function xz_time ( $type = 'art', $ago_time = 86400 ,$after = ' - ago' , $late = '' ) {
if ( $type === 'cmt' ){
$diff = (int) abs( get_comment_time('U') - current_time('timestamp'));
if ( (!$late) || $late ==''){ $late = get_comment_time('Y/n/j - H:i');};
}
if ( $type === 'art' ){
$diff = (int) abs( get_the_time('U') - current_time('timestamp'));
if ( (!$late) || $late ==''){$late = get_the_time('Y/n/j - H:i');};
}
if ( $diff <= 3600 ) {
$mins = round($diff / 60);
if ($mins <= 1) {
$mins = 1;
}
/* translators: min=minute */
$since = sprintf(_n('%s Min', '%s Mins', $mins), $mins);
} else if (($diff <= 86400) && ($diff > 3600)) {
$hours = round($diff / 3600);
if ($hours <= 1) {
$hours = 1;
}
$since = sprintf(_n('%s Hour', '%s Hours', $hours), $hours);
} elseif ($diff >= 86400) {
$days = round($diff / 86400);
if ($days <= 1) {
$days = 1;
}
$since = sprintf(_n('%s Day', '%s Days', $days), $days);
};
$since .= $after ;
return $diff < $ago_time ? $since : $late ;
}endif;
应用办法
将上述代码拔出到你主题的function.php文件中
而后在你想显示**工夫的中央调用该函数即可。
函数起码输出设定一个参数 即$type 类型字符串 ‘cmt'(评论工夫)或'art'(文章工夫)
示例:
//最简略的调用
echo xz_time('cmt');
//**内的输入后果: 3 Hours-ago
//**后的输入后果: 2015/12/26 - 20:01
//调用时长为2天内的**工夫,之前工夫显示默许工夫
echo xz_time('cmt',172800);
//2天内的输入后果: 3 Hours-ago
//2天后的输入后果: 2015/12/26 - 20:01
//调用时长为2天内的**工夫,**工夫之后显示 '之前的评论'
echo xz_time('cmt',172800,'之前的评论');
//2天内的输入后果: 3 Hours 之前的评论
//2天后的输入后果: 2015/12/26 - 20:01
//调用时长为2天内的**工夫,之前工夫显示为 年-月-日
echo xz_time('cmt',172800,'之前的评论',get_comment_time('Y-n-j'));
//2天内的输入后果: 3 Hours 之前的评论
//2天后的输入后果: 2015/12/26
以上就是安达网络工作室关于《优化WordPress中文章与评论的时间显示》的一些看法。更多内容请查看本栏目更多内容!
这些规范化代码蕴含了一些根本的构造框架,你只要按本人的需求填补这个框架,可能的话需求调整某些配置。 不...
本文实例讲述了WordPress完成回复文章评论后发送邮件告诉的性能。分享给大家供大家参考,详细如下: 很多时...
自从用了阿里云主机,真是没有省心过。 这两天网站CPU天天100+的,过一会就挂了,原来是wp-cron.php文件造成...
效劳器钱用光了要关了或许是效劳器想要搬家,需求备份各种数据。 明天简略的备份了一下在效劳器下面wordpre...
现在,WordPress CMS 主题越来越多,WordPress 作为 CMS 终究有那些共同的劣势,吸援用户去一直的延长扩大呢...
如在 Nicky 的博客中, 我发现了下图中的搜寻栏. 在搜寻栏中增加这样的提醒信息, 能够疏导访客对网站进行搜...