WordPress显示几分钟几小时几天前

发布于 2019-05-06

WordPress显示几分钟几小时几天前

我们在浏网站或论坛的时候,经常会看到此文章或评论发布于几分钟前、几小时前、几天前这样的微时间格式,那么在wordpress中显示这种格式的时间该如何实现呢?

方法一:添加 filter 方式

WordPress默认调用的是the_time()函数,可以通过给the_time()添加一个 filter来显示微时间,在 function.php 文件中添加如下代码。

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( $stime ) {
    date_default_timezone_set ('ETC/GMT');
    $ptimes = strtotime($stime);
    $etime = time() - $ptimes;
    if ($etime < 1) {
        $time = '刚刚';
    }elseif($etime < 60){
        $time = sprintf('%s 分钟前', $etime);
    } elseif ($etime < 1440) {
        $time = sprintf('%s 小时前', round($etime / 60));
    } else {
        $time = date("Y-m-d",$ptimes);
    }
    return $time;
}

或者

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'))); ?>
喜欢 1
奋楫笃行,臻于至善!

相关文章

BEGIN 主题搜索结果页面添加标题图片

BEGIN 主题可以给文章分类页面、独立页面以及文章详情页面添加标题图片,但是在搜索结果页面及 404 页面却无法通过配置添加标题图片,本文简单分享一下给搜索结果页面和 404 页面添加标题图片,以及...
阅读全文

WordPress 文章评论设置分页按时间倒序排序

WordPress 评论默认是按发布的时间顺序排列的,如果我们想按照时间倒序排列,可以根据本文的方法修改。 1、修改comment-template.php 编辑文件 wp-includes/comm...
阅读全文

BEGIN 主题最新文章页面添加加载更多按钮

使用 Begin 主题的博主可能都发现过这样一个问题:如果设置杂志布局,博客页面(本站叫最新文章)是不显示加载更多按钮图标的,而其他所有带分页的页面都显示。如果不显示加载更多按钮图标的话,我们就只能通...
阅读全文

使用 LetterAvatar 脚本生成首字图片替代默认评论头像

Gravatar 是全球通用头像,如果我们没有设置 Gravatar 头像,那么在网站上留言或评论就会显示默认的头像或者随机头像,这样的话用户体验不是很好。今天为大家分享一下使用 LetterAvat...
阅读全文

WordPress 文章链接地址 ID 不连续解决方法

Wordpress 默认情况下发布的文章 ID 不是连续的,是因为 Wordpress 自动草稿、文章修订版、页面、菜单、媒体等功能都要占用 ID,所以发布的文章 ID 一般是不连续的。今天为大家分享...
阅读全文

使用 iconfont 阿里矢量图标为网站添加图标的方法

Iconfont 是一个开源的矢量图标管理平台,它的图标库非常丰富,大概有一百三十多万个。Iconfont 可以按照需求定制图标字体库,还能随时修改,最重要的字体图标库只有 100 多 K。今天就来为...
阅读全文

发表回复

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