WordPress自定义字段日期格式修改失败求助
解决自定义文章类型「Event」日期字段展示格式问题
问题分析
你的代码报错核心原因是get_post_meta返回的是字符串类型的日期值,而非DateTime对象,直接调用format()方法会触发致命错误。另外,get_post_meta默认返回数组,虽你已取[0],但可优化为直接获取单个值。
修正方案
方案1:将字符串日期转为DateTime对象处理
假设自定义字段存储的是YYYY-MM-DD或其他DateTime可识别的格式:
<div class="single-post-event-meta"> <p><?php // 第三个参数设为true,直接获取单个值,无需取数组下标 $event_date = get_post_meta(get_the_ID(), '_event_post_date_value_key', true); if (!empty($event_date)) { $date_obj = new DateTime($event_date); echo $date_obj->format('M'); // 输出月份缩写,如Jan/Feb } ?></p> </div>
方案2:使用WordPress内置函数date_i18n(推荐,支持多语言)
若需适配网站多语言环境,用date_i18n更合适:
<div class="single-post-event-meta"> <p><?php $event_date = get_post_meta(get_the_ID(), '_event_post_date_value_key', true); if (!empty($event_date)) { // 将日期转为时间戳 $timestamp = strtotime($event_date); // 输出本地化的月份缩写,参数对应PHP date格式 echo date_i18n('M', $timestamp); } ?></p> </div>
额外注意事项
- 确认自定义字段的键名
_event_post_date_value_key是否正确,部分自定义字段插件会自动给键名加前缀,需核对后台自定义字段的实际键名。 - 如果字段存储的是时间戳,直接用
date_i18n('M', $event_date)或DateTime::createFromFormat('U', $event_date)处理即可。
内容的提问来源于stack exchange,提问作者onlyoreoo
相关产品推荐
相关产品推荐

