修改Human_time_diff()以将“天”缩短为“d”,将“小时”缩短为“h”等

时间:2011-04-30 作者:OneFishTaco

我使用的函数echo time\\u ago()显示的时间如下:

5 days ago 将其更改为的最佳方式是什么5d ago ?

我的研究让我找到了位于“formatting.php”中的human\\u time\\u diff()函数,因此我尝试直接编辑位于/wp includes/formatting的函数。php但是当我改变"hours""h" 等等它变得疯狂,给我错误。我知道修改核心不是最好的方法,所以有什么想法吗?非常感谢。

1 个回复
最合适的回答,由SO网友:Rarst 整理而成

该函数的输出没有过滤器。您可以分叉(复制/重命名/编辑)它或添加将替换输出中字符串的包装器,如下所示:

function short_time_diff( $from, $to = \'\' ) {

    $diff = human_time_diff($from,$to);

    $replace = array(
        \'hour\'  => \'h\',
        \'hours\' => \'h\',
        \'day\'   => \'d\',
        \'days\'  => \'d\',
    );

    return strtr($diff,$replace);
}
PS事后思考-实际上字符串是本地化的,所以有翻译过滤器可以使用。。。但要替换的东西是通用的,这将有可能在其他地方破坏它。

UPDATE

由于WP 4.0,有一个过滤器可用于human_time_diff:

add_filter( \'human_time_diff\', function($since, $diff, $from, $to) {

    $replace = array(
        \'hour\'  => \'h\',
        \'hours\' => \'h\',
        \'day\'   => \'d\',
        \'days\'  => \'d\',
    );

    return strtr($since, $replace);

}, 10, 4 );

结束

相关推荐