优化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导航菜单函数wp_nav_menu()详解

1、wp_nav_menu()函数引见:worpdress倒退到3.0当前添加了一个自定义菜单函数wp_nav_menu(),使得wordpress...

wordpress增加mp3音频文件教程

上传音频和视频文件应用媒体上传到WordPress是很容易的。虽然媒体上传意识到这些文件,并显示相应的文件类型...

详解WordPress中用于更新和获取用户选项数据的PHP函数

update_user_option()函数 update_user_option()函数作用利用全局博客权限更新用户选项。 用户选项相似于用...

WordPress用户登录登出后重定向到指定页面的完成办法

这篇文章将向您展现WordPress用户登录后如何重定向到指定页面或许文章的技巧。一、重定向到网站治理面板。 ...

WordPress评论中制止HTML代码显示的办法

本文实例讲述了WordPress评论中制止HTML代码显示的办法。分享给大家供大家参考。详细剖析如下: 应用WordPr...

Wordpress迁徙后图片地址谬误成绩的处理办法

WordPress改换空间后 需求调整的几个中央? 1.数据库衔接配置文件 wp-config.php 2.查看.htaccess文件,并修...

需求提交

客服服务