优化WordPress中文章与评论的工夫显示

很多博客都喜爱用 评论宣布于 “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 时间显示 PHP PHP编程
版权声明:本文为 安达网络工作室 转载文章,如有侵权请联系我们及时删除。
相关文章
wordpress优化头部 去掉版权等信息 wordpress去掉generator

wordpress在默许状况下,头部会呈现很多平常用不到的html代码,比方: 复制代码代码如下: <link rel="altern...

wordpress中用JavaScript 输入页面代码的办法

比方, 一个做音乐的网站一定不心愿搜寻引擎收录它的存档月份, 由于没有人会经过这个来搜寻出去. 这咱们就能...

wordpress 显示文章日期的办法

WordPress的模板十分灵敏,一个优秀的模板所完成的性能往往超出你的设想。这篇文章说说在WordPress里调用文...

WordPress关上速度十分慢的处理方法

明天,特带来了5个实例技巧,至多能够协助冤家们在缩小wordpress博客的负荷上起到一点点作用吧,上面和网友...

WordPress增加并整合Google自定义搜寻完成步骤及代码

给博客增加一个Google自定义搜寻是非常必要的,用户搜寻时高亮显示了要害词,晋升了搜寻的精确度,应用Goog...

wordpress 动态化设置 windows主机伪动态去除index.php办法

关于伪动态的成绩,置信用 WordPress 的冤家都会很相熟 WP-Cache 这款插件了,不只由于它出众的功能使其简直...

需求提交

客服服务