如何在WordPress中将美式格式月份转为法语前三字母显示
解决WordPress自定义字段美式月份转法语缩写的问题
我来帮你搞定这个月份转法语的问题!首先我们得把美式格式的日期字符串解析出来,拿到对应的月份,再映射成法语的前三个字母缩写。下面是具体的实现思路和代码示例:
步骤1:获取并解析自定义字段的日期
假设你的自定义字段键是custom_date,先拿到这个字段的值,然后用PHP的DateTime类来解析美式日期格式(比如"F j, Y",也就是类似"January 15, 2024"的格式):
// 获取自定义字段里的美式日期 $american_date = get_post_meta(get_the_ID(), 'custom_date', true); // 解析日期,生成DateTime对象 $date_obj = DateTime::createFromFormat('F j, Y', $american_date);
步骤2:创建法语月份缩写映射表
因为PHP的本地化设置有时候在服务器上不太靠谱(比如没装对应语言包),所以我们自己建一个映射数组是最稳妥的方式:
// 美式月份全称 => 法语前三个字母缩写 $french_month_abbr = [ 'January' => 'Jan', 'February' => 'Fév', 'March' => 'Mar', 'April' => 'Avr', 'May' => 'Mai', 'June' => 'Jui', 'July' => 'Jul', 'August' => 'Aoû', 'September' => 'Sep', 'October' => 'Oct', 'November' => 'Nov', 'December' => 'Déc' ];
步骤3:替换月份并输出最终日期
如果日期解析成功,我们就取出原月份,替换成法语缩写,再拼接成你需要的格式(比如"15 Jan 2024"):
if ($date_obj) { // 获取美式月份全称 $english_month = $date_obj->format('F'); // 匹配法语缩写,找不到就 fallback 到原月份 $french_month = isset($french_month_abbr[$english_month]) ? $french_month_abbr[$english_month] : $english_month; // 拼接成最终日期格式(你可以根据需求调整,比如改成"d/m/Y"这种) $final_date = $date_obj->format('j ') . $french_month . $date_obj->format(' Y'); // 输出处理后的日期 echo $final_date; } else { // 解析失败的话,直接输出原日期或者自定义错误提示 echo $american_date; }
另一种本地化方式(需服务器支持)
如果你的服务器安装了法语语言包,也可以用setlocale和strftime来实现,但这种方式依赖服务器配置,稳定性不如自定义映射:
// 设置本地化(不同服务器的locale名称可能不同,比如fr_FR, fr_FR.UTF-8, french) setlocale(LC_TIME, 'fr_FR.UTF-8', 'fr_FR', 'french'); $american_date = get_post_meta(get_the_ID(), 'custom_date', true); $date_obj = DateTime::createFromFormat('F j, Y', $american_date); if ($date_obj) { // %d是日,%b是月份缩写(法语),%Y是年 echo strftime('%d %b %Y', $date_obj->getTimestamp()); } else { echo $american_date; }
个人推荐优先用第一种自定义映射的方法,不会因为服务器环境的问题掉链子!
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

