【问题标题】:Get all order item meta data in an unprotected array in WooCommerce 3在 WooCommerce 3 中获取不受保护的数组中的所有订单项元数据
【发布时间】:2019-03-31 05:50:50
【问题描述】:

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

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。

【问题讨论】:

    标签: php wordpress object woocommerce protected


    【解决方案1】:

    更新

    要在未受保护的数组中获取订单商品元数据,您可以改用WC_Order_Item 方法get_formatted_meta_data()

    WC_Order_Item 方法 get_formatted_meta_data() 有 2 个可选参数:

    • $hideprefix 隐藏前缀元键(默认为"_"
    • $include_all 包括所有元数据,不仅是自定义元数据(默认为false

    所以在 order items 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

    【讨论】:

    • 洛伊克,谢谢!你让我免于头痛一两次!
    猜你喜欢
    • 2017-09-21
    • 2018-07-11
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2023-04-02
    相关资源
    最近更新 更多