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

给侧边栏“最新文章”栏目的文章链接 <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', 'seconds', 'second', );
	$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
版权声明:除特殊注明均为原创文章,转载请保留出处!

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

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

评论总数:13,访客评论:7,作者评论:6

  1. 会代码的人就是不一般,问题都自己解决了!

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

    回复
    • sys

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

      回复
    • sys

      @青山 那还不赶快送我一首凉凉 :roll:

      回复

发表评论

快捷键:Ctrl + Enter