目录
首页 笔记 详情

WordPress让时间格式显示为几分钟几小时几天前


我们在浏网站或论坛的时候,经常会看到此文章或评论发布于几分钟前、几小时前、几天前这样的微时间格式,那么在wordpress中显示这种格式的时间该如何实现呢?WordPress让时间格式显示为几分钟几小时几天前一般调用时间都是直接使用time()函数,为了让时间格式以更为科学的方式显示,WordPress默认调用的是the_time()函数,可以通过给the_time()添加一个 filter来显示修改后的时间,在 function.php 文件中添加如下代码。

添加 filter 方式

function timeago(){
    $time_diff = current_time('timestamp') - get_the_time('U'); //计算两个日期之间的秒数差
    if ($time_diff <= 86400 * 7) { // 判断日期差是否在一周之内
        if ($time_diff <= 300) { //5分钟之内
            echo '刚刚'; //显示刚刚
        } elseif ($time_diff <= 86400) { //24小时之内
            echo human_time_diff(get_the_time('U'), current_time('timestamp')) . '前'; //显示几小时前
        } else {
            $days = 0;
            if (get_the_time('m') != current_time('m')) { // 如果不跨月
                $days = daysInmonth1(get_the_time('y'), get_the_time('m')); // 计算上个月总共有多少天
            }
            $s = current_time('d') + $days; // 计算天数差时要加上上个月的总天数
            $m = get_the_time('d');
            if ($m == $s - 1) {
                echo '昨天'; // 显示昨天
            } else {
                echo $s - $m - 1 . '天前'; //显示几天前
            }
        }
    } else {
        if (get_the_time('Y') == current_time('Y')) {
            echo the_time('m月d日');
        } else {
            echo the_time('Y年m月d日');
        }
    }
}
add_filter('the_time',timeago');

 

自定义函数,本文推荐

首先,在我们所使用主题的 functions.php 新定义一个方法。

function timeago( $ptime ) {
    date_default_timezone_set ('ETC/GMT');
    $ptimes = strtotime($ptime);
    $etime = time() - $ptimes;
    if($etime < 1) return '刚刚';
    $interval = array (
        12 * 30 * 24 * 60 * 60  =>  '年前 ('.date('Y-m-d', $ptime).')',
        30 * 24 * 60 * 60       =>  '个月前 ('.date('m-d', $ptime).')',
        7 * 24 * 60 * 60        =>  '周前 ('.date('m-d', $ptime).')',
        24 * 60 * 60            =>  '天前',
        60 * 60                 =>  '小时前',
        60                      =>  '分钟前',
        1                       =>  '秒前'
    );
    foreach ($interval as $secs => $str) {
        $d = $etime / $secs;
        if ($d >= 1) {
            $r = round($d);
            return $r . $str;
        }
    };
}

然后,在需要显示微时间的地方调用即可。

文章发布时间格式修改使用方法:

把原先显示时间的代码改为以下代码即可:

<?php echo timeago(get_gmt_from_date(get_the_time('Y-m-d G:i:s'))); ?>

评论发布时间格式修改使用方法:

把原先显示时间的代码改为以下代码即可:

<?php echo timeago(get_gmt_from_date(get_comment_date('Y-m-d G:i:s'))); ?>

 


写笔记

咨询

您的电子邮箱地址不会被公开。 必填项已用*标注