千家信息网

如何优化WordPress中文章与评论的时间显示

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,小编给大家分享一下如何优化WordPress中文章与评论的时间显示,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!改善的时间
千家信息网最后更新 2024年11月26日如何优化WordPress中文章与评论的时间显示

小编给大家分享一下如何优化WordPress中文章与评论的时间显示,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

改善的时间显示方式的原理
很简单,就是通过 WordPress 的一个内置的函数处理现在的时间和文章、评论发表的时间差,显示距今有X分钟、X小时、X天。
这个函数就是 human_time_diff ()

用法:

 

说明:
判断两个时间标记的差异。
以人类可阅读的格式,如"1小时"、"5分钟"、"两天",返回$from和$to 两个时间变量的时间差。

从英文上也很好理解:from 到 to 嘛。(这句是很废吧,哈哈。)

雏形版改善实现

 //将你的评论时间显示的函数改成如下就可以了

所有的日期都计算时间差,很暴力吧?

初级版的实现办法
简单的加一个判断,如果评论时间没有超过一天则显示XX小时之前,如果超过一天则显示原始日期。
这样比较人性化吧?总不能让读者总掰着指头算38天之前是什么日子吧?哈哈!
代码:

  //将你的评论时间显示的函数改成如下就可以了

增强版
那么我们能不能再增强一下呢?
为什么增强?
好吧,因为我这个人比较较真,觉得中文显示日期不好看,影响到我的排版,喜欢英文显示日期,而中文版的 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;

时间判断代码改为如下:

  //将你的评论时间显示的函数改成如下就可以了

显示评论、文章相对时间

根据上面的版本、下面的这个应该算是增强改进版吧,因为要达到效果还是需要在主题里添加代码,所以还没到终极版,哈哈。
函数代码如下:

相对时间函数

if ( ! function_exists( 'xz_time' ) ) :/** * 显示文章、评论相对时间的封装函数. * @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中文章与评论的时间显示"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

时间 评论 函数 结果 输出 代码 中文 字符 字符串 小时 文章 日期 天后 两个 时长 时间差 篇文章 类型 英文 中文版 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 研发和技术服务与软件开发 存储数据的方式 数据库 2017最新网络安全事件 网络技术很发达英语 数据库技术学些什么啊 维保管理平台软件开发 汕尾地区近十年网络安全事件 上海idc服务器厂商 射阳行伊网络技术服务有限招聘 数据库查询每个学生的绩点分 软件开发的运行可行性分析 数据库第四版课后答案详解 数据库全连接代码 服务器文件共享备份 防火墙内部服务器 互联网科技公司流程 学it软件开发有没有用 武汉市手机app软件开发公司 支付宝数据库出现删库 我的世界埋骨之地服务器 研发和技术服务与软件开发 单位网络安全备份恢复制度 软件开发人员特性 上海idc服务器厂商 射阳行伊网络技术服务有限招聘 软件开发最好的学校是哪里 软件开发软件排名 网络安全刑事犯罪案例 定制化软件开发市场需求解决方案 华为2288服务器系统安装
0