在Woocommerce 3中以不受保护的数组获取订单商品元数据

时间:2018-10-26 12:53:31

标签: 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_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。

1 个答案:

答案 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