首页 > 分类 > 网络百科 > 文章内容

英文版 WordPress 下 human_time_diff 函数的本地化

给侧边栏“最新文章”栏目的文章链接 <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 呀。

您可能还会对这些文章感兴趣
评论总数:13,访客评论:7,作者评论:6
发表评论

您的电子邮箱地址不会被公开。

你好,新朋友!

emojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemojiemoji