Php 获取WooCommerce 3中未受保护的数组中的所有订单项元数据

Php 获取WooCommerce 3中未受保护的数组中的所有订单项元数据,php,wordpress,object,woocommerce,protected,Php,Wordpress,Object,Woocommerce,Protected,是否有其他方法可以为不返回受保护数组的自定义属性返回元值 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_Met

是否有其他方法可以为不返回受保护数组的自定义属性返回元值

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"
    }
我也试过了


返回NULL。

已更新

若要在不受保护的数组中获取订单项元数据,可以改用方法

该方法有2个可选参数:

  • $hideprefix
    隐藏前缀元键(默认值为
    “\uu”
  • $include\u all
    包括所有元数据,而不仅仅是自定义元数据(默认值为
    false
因此,在每个循环的顺序项中:

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>';
}
现在,您可以使用order items foreach循环中的方法直接从元键中获取值

所以对于
pa_后半部分
meta键:

它将显示:nutty butty


相关线程:

Loic,谢谢!你救了我一两次头痛!
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 ( $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
}