PHP中如何获取WooCommerce的WC_Meta_Data对象内的value键值
问题原因
- 首先
$meta[1]是WC_Meta_Data对象类型,不是数组,你使用数组下标的$meta[1][value]语法本身就不符合PHP对象的访问规则。 - 其次你在
print_r结果里看到的current_data、data都是protected(受保护)属性,PHP不允许在类定义外部直接访问受保护/私有属性,就算你强制转数组也无法正常读取到值。
正确获取方式
WooCommerce的WC_Meta_Data类已经内置了公开的取值方法,直接调用get_value()方法即可读取对应value值:
// 直接获取value $custom_end_date = $meta[1]->get_value(); echo $custom_end_date;
如果需要同时获取meta的键名,也可以调用配套的get_key()方法:
$meta_key = $meta[1]->get_key(); // 输出结果为 _end_date_custom_field
如果是遍历整个$meta数组读取所有meta值,可以这么写:
foreach ($meta as $single_meta) { $key = $single_meta->get_key(); $value = $single_meta->get_value(); // 这里写你的业务逻辑 }
补充说明:WooCommerce所有内置数据对象都遵循用
get_*/set_*方法读写属性的规范,不要尝试直接访问受保护属性,用官方提供的公开方法兼容性最好,也不会触发报错。
内容的提问来源于stack exchange,提问作者EasyWay
相关产品推荐
相关产品推荐

