您好,登錄后才能下訂單哦!
小編給大家分享一下如何優化WordPress中文章與評論的時間顯示,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
改善的時間顯示方式的原理
很簡單,就是通過 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' ) ) : /** * 顯示文章、評論相對時間的封裝函數. * @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中文章與評論的時間顯示”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。