当前位置:首页 > 分类 > 网络百科 > 文章内容

给侧边栏“最新文章”栏目的文章链接 <a> 标签中加了个 title 属性,用来在鼠标悬停时显示文章发布于多久以前,需要用到 time ago 函数,查到 WordPress 有原生函数 human_time_diff() 可以实现。由于用的是英文版 WordPress,把该函数代入到 title 属性值中,效果是这样的:

中文主题下看起来味道太怪了。

第一反应是挂载一个 en_US.mo 语言包的方式解决。可本来使用英文版 WordPress 就是考虑程序少加载文件能提升效率,挂载语言包就违背了初衷,因此换个方法。函数源码中可以看到自带过滤器:

return apply_filters( 'human_time_diff', $since, $diff, $from, $to );

所以用替换字符串的方式将其本地化:

function replaced_human_time_diff( $since ) {
	$search = array( 'years', 'year', 'months', 'month', 'weeks', 'week', 'days', 'day', 'hours', 'hour', 'mins', 'min' );
	$replace = array( '年', '年', '个月', '个月', '周', '周', '天', '天', '小时', '小时', '分钟', '分钟' );
	$since = str_replace( $search, $replace, $since );
	return $since;
}
add_filter( 'human_time_diff', 'replaced_human_time_diff', 10, 1 );

替换完成后再看,好像没什么问题了。

P.S. 真是觉得 WordPress 的钩子 (Hook) 机制 Nice 呀。

本页链接:https://www.syshut.com/human_time_diff-function-localization-with-en-wp.html | SYS 棚户区
文章标签:

微信扫一扫,打赏作者吧~

支付宝扫一扫,打赏作者吧~

评论总数:10,访客评论:5,作者评论:5

  1. 对鸟叔来说,能用插件的不会费时间研究代码,因为我根本不会。

    [ 回复 ]
    • sys

      @鸟叔 会啥来啥,节约时间,岂不很好?

      [ 回复 ]
    • sys

      @灰常记忆 我这也一样,一开启 ajax 评论翻页就会导致评论回复的链接出现问题,所以禁用掉了,只保留了 ajax 评论提交..

      [ 回复 ]
      • sys

        @青山 他的主题我看过,大佬的方案救不了 :sad:

        [ 回复 ]

发表评论

快捷键:Ctrl + Enter