WordPress插件日期翻译失效及date_i18n使用错误求助
WordPress日期本地化问题解决方法
错误原因
- 原生PHP的
DateTime::format()不支持WordPress的本地化翻译逻辑,所以月份名(如September)无法自动转换为西班牙语的小写形式(septiembre)。 - 你之前的错误用法:将
date_i18n()返回的已格式化完成的日期字符串当作格式参数传给format(),导致PHP解析格式字符时出现混乱,输出乱码。
正确解决方案
方案1:使用date_i18n()处理时间戳
先将DateTime对象转换为Unix时间戳,再传入date_i18n()进行本地化格式化:
// 从DateTime对象获取Unix时间戳 $timestamp = $start->getTimestamp(); // 执行本地化日期格式化 $date = date_i18n('j \d\e F \d\e Y', $timestamp);
方案2:使用wp_date()(推荐,WordPress 5.3及以上版本)
wp_date()是WordPress官方封装的本地化日期函数,支持直接传入DateTime对象,用法更简洁:
// 直接传入DateTime对象和目标格式 $date = wp_date('j \d\e F \d\e Y', $start);
效果说明
以上两种方法都会读取WordPress后台设置的站点语言(如西班牙语),自动将F对应的月份名翻译为本地化形式,最终输出符合要求的28 de septiembre de 2022格式。
内容的提问来源于stack exchange,提问作者Maria
相关产品推荐
相关产品推荐

