目錄
优化WordPress中文章与评论的时间显示,wordpress评论
您可能感兴趣的文章:
首頁 php教程 php手册 优化WordPress中文章与评论的时间显示,wordpress评论

优化WordPress中文章与评论的时间显示,wordpress评论

Jun 13, 2016 am 08:47 AM
wordpress 搜尋引擎優化 時間

优化WordPress中文章与评论的时间显示,wordpress评论

很多博客都喜欢用 评论发表于 “XXX 分钟 之前”、文章发表于 “XXX 分钟 之前”来显示文章评论的时间,改善的时间显示方式不仅能很直观的告诉读者这篇文章或评论发表距今已有多长时间,更能增强评论回复的时间感,哥很喜欢,因为前一阵子压在手里的东西太多了,工作日白天又苦于不能上网,所以主题的样式及功能部分一点一点的写拖了好长时间,最近这阵子刚好轮到折腾评论了,所以就逐步参照网上流行的样式一点一点的修改起来自己的评论样式和功能。

So…..
Go…..
交道麻袋…..评论日期和文章日期调用函数不同,下面以评论日期为例,文章日期请自行调整。

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

用法:

1

<&#63;php human_time_diff( $from, $to ) ;&#63;>

登入後複製

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

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

雏形版改善实现

1

2

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

<&#63;php echo human_time_diff( get_comment_time('U') , current_time('timestamp')) ;&#63;>

登入後複製

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

<&#63;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);};

 ;&#63;>

 

 

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

<&#63;php echo $cmt_time ;&#63;>

登入後複製

增强版
那么我们能不能再增强一下呢?
为什么增强?
好吧,因为我这个人比较较真,觉得中文显示日期不好看,影响到我的排版,喜欢英文显示日期,而中文版的 WordPress 汉化的真的是没有死角(汉化的真仔细),如果我们直接用 human_time_diff 函数输出的话,中文版的 WordPress 会将结果全部汉化显示XX小时XX天之前,这样很有可能会影响我们的排版,而且这个 human_time_diff 函数里既没有留钩子,也没有预留一个不汉化的参数,所以我们想要显示英文的话,只有两个办法:

直接修改 human_time_diff 函数,让汉化失效,这样做太暴力,而且以后升级了还要再进去改,伦家不喜欢。
重写一个自己的 human_time_diff 函数,绕过汉化。
function.php 里面强力插入如下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

//原函数的 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;

登入後複製

时间判断代码改为如下:

1

2

3

4

5

6

7

8

9

10

<&#63;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);};

 ;&#63;>

 

 

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

<&#63;php echo $cmt_time ;&#63;>

登入後複製

显示评论、文章相对时间

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

相对时间函数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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 &#63; $since : $late ;

}endif;

登入後複製

使用方法
将上述代码插入到你主题的function.php文件中
然后在你想显示相对时间的地方调用该函数即可。
函数最少输入设定一个参数 即$type 类型字符串 ‘cmt'(评论时间)或'art'(文章时间)
示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

//最简单的调用

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中利用AJAX技术进行评论提交的实现示例
  • WordPress中利用AJAX异步获取评论用户头像的方法
  • 详解WordPress中调用评论模板和循环输出评论的PHP函数
  • WordPress中限制非管理员用户在文章后只能评论一次
  • 讲解WordPress中用于获取评论模板和搜索表单的PHP函数
  • 解决WordPress使用CDN后博文无法评论的错误
  • 利用jQuery实现WordPress中@的ID悬浮显示评论内容
  • 编写PHP脚本来实现WordPress中评论分页的功能
  • 修改PHP脚本使WordPress拦截垃圾评论的方法示例
  • 在WordPress中实现评论头像的自定义默认和延迟加载
  • WordPress中对访客评论功能的一些优化方法
  • WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP 與 Flutter 的比較:行動裝置開發的最佳選擇 PHP 與 Flutter 的比較:行動裝置開發的最佳選擇 May 06, 2024 pm 10:45 PM

PHP 與 Flutter 的比較:行動裝置開發的最佳選擇

wordpress文章在哪個資料夾 wordpress文章在哪個資料夾 Apr 16, 2024 am 10:29 AM

wordpress文章在哪個資料夾

wordpress模板檔案在哪 wordpress模板檔案在哪 Apr 16, 2024 am 11:00 AM

wordpress模板檔案在哪

wordpress哪個版本穩定 wordpress哪個版本穩定 Apr 16, 2024 am 10:54 AM

wordpress哪個版本穩定

wordpress需要備案嗎 wordpress需要備案嗎 Apr 16, 2024 pm 12:07 PM

wordpress需要備案嗎

wordpress如何刪除主題模板 wordpress如何刪除主題模板 Apr 16, 2024 am 02:36 AM

wordpress如何刪除主題模板

什麼是自媒體帳號?自媒體帳號流量高怎麼做? 什麼是自媒體帳號?自媒體帳號流量高怎麼做? Apr 29, 2024 am 09:34 AM

什麼是自媒體帳號?自媒體帳號流量高怎麼做?

wordpress文章資料庫是哪個 wordpress文章資料庫是哪個 Apr 16, 2024 am 11:12 AM

wordpress文章資料庫是哪個

See all articles