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

WordPress使用get_post_custom取offer字段email值输出NULL如何解决

问题根源

  • get_post_custom() 方法返回的是文章所有自定义字段的二维数组,每个字段名对应的取值默认存储为数组格式,即使字段仅有一个值也会包裹在数组第一层,要读取单个字段值需要先取对应键下索引为0的元素
  • 你存储的offer字段是序列化字符串,必须先反序列转为PHP可识别的数组/对象结构才能读取内部的email子键,你直接读取的$my_custom_field['email']属于读取自定义字段的顶级键,实际不存在因此返回NULL
  • 直接遍历未反序列化的序列化字符串时,PHP会将字符串按单个字符拆解遍历,序列化字符串的首个字符是s,因此你遍历输出的结果就是string(1) "s"

实现仅输出email对应值的代码

// 获取当前文章所有自定义字段
$all_custom_fields = get_post_custom();

// 先判断offer字段是否存在
if (isset($all_custom_fields['offer'])) {
    // 取出offer字段的原始序列化值
    $offer_raw = $all_custom_fields['offer'][0];
    // 使用WordPress内置的安全反序列化方法处理,避免非序列化内容报错
    $offer_data = maybe_unserialize($offer_raw);
    // 安全读取email值,避免键不存在抛出警告
    $email = $offer_data['email'] ?? '';
    // 输出前转义,符合WordPress安全规范
    echo esc_html($email);
}

内容的提问来源于stack exchange,提问作者Sanad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:30:06