还有另一种方法可以返回不返回受保护数组的自定义属性的元值
foreach ($order->get_items() as $item_key => $item_values) {
$item_id = $item_values->get_id();
$item_meta_data = $item_values->get_meta_data();
var_dump($item_meta_data);
}
它输出:
object(WC_Meta_Data)#3433 (2) {
["current_data":protected]=>
array(3) {
["id"]=>
int(4690)
["key"]=>
string(14) "pa_second-half"
["value"]=>
string(11) "nutty-butty"
}
我也尝试过this
$item_meta_data = $item_values->get_data();
$item_meta_data['key']
哪个返回NULL。
答案 0 :(得分:2)
已更新
要获取不受保护的数组中的订单商品元数据,可以改用WC_Order_Item
方法get_formatted_meta_data()
。
WC_Order_Item
方法get_formatted_meta_data()
有2个可选参数:
$hideprefix
隐藏前缀元密钥(默认为"_"
)$include_all
包括所有元数据,不仅包括自定义元数据(默认为false
)
因此在foreach循环的订单项中:
foreach ( $order->get_items() as $item_id => $item ) {
// Get all meta data in an unprotected array of objects
$meta_data = $item->get_formatted_meta_data('_', true);
// Raw output (testing)
echo '<pre>'; var_dump($meta_data); echo '</pre>';
}
您将获得一个不受保护的可访问对象数组,例如:
[4690]=>
object(stdClass)#0000 (4) {
["key"]=>
string(14) "pa_second-half"
["value"]=>
string(11) "nutty-butty"
["display_key"]=>
string(11) "Second half"
["display_value"]=>
string(12) "Nutty butty"
}
现在,您可以在订单项foreach循环中使用
WC_Data
方法get_meta()
从元密钥直接获取值。因此,对于
pa_second-half
元键:foreach ( $order->get_items() as $item_id => $item ) { $meta_data = $item->get_formatted_meta_data(); // Get the meta data value $meta_value = $item->get_meta("pa_second-half"); echo $meta_value; // Display the value }
它会显示: nutty-butty
相关主题: Get Order items and WC_Order_Item_Product in Woocommerce 3