You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:02:10