如何在 WooCommerce 3 中获取订单嵌套元数据

我们已经安装了另一个名为 WooCommerce 的插件,该插件可以通过支付订单来Booster Plus for WooCommerce修改。checkout pageinvoice number


我也thank you page通过显示来定制我们的invoice number。目前,我无法做到这一点,因为我不知道如何正确获取嵌套$order->get_data()结果的值。


<?php 

  $order_data = $order->get_data();

  print_r($order_data);

?>

上面的结果order_data如下所示:


(

    [id] => 7403

    [discount_total] => 0

    [discount_tax] => 0

    [shipping_total] => 0.00

    [shipping_tax] => 0

    [cart_tax] => 2.47

    [total] => 21.47

    [total_tax] => 2.47

    [customer_id] => 20

    [order_key] => wc_order_8pt3q7T79

    [billing] => Array

    (

      [first_name] => John

      [last_name] => Done

      [company] => g2x

      [address_1] => 3134 James Street

      [address_2] => 

      [city] => Moose Factory

      [state] => ON

      [postcode] => P0L 1W0

      [country] => CA

      [email] => testjohndoe123@gmail.com

      [phone] => 705-658-2112

    )

    [cart_hash] => 087347d19dff4677dc8kaeb2b2c653c6

    [number] => 7403

    [meta_data] => Array

    (

      [0] => WC_Meta_Data Object

        (

          [current_data:protected] => Array

              (

                  [id] => 102652

                  [key] => mailchimp_woocommerce_campaign_id

                  [value] => 

              )


          [data:protected] => Array

              (

                  [id] => 102652

                  [key] => mailchimp_woocommerce_campaign_id

                  [value] => 

              )

        )


      [1] => WC_Meta_Data Object


      [2] => WC_Meta_Data Object


      [3] => WC_Meta_Data Object


      [4] => WC_Meta_Data Object


      [5] => WC_Meta_Data Object

      (

        [current_data:protected] => Array

        (

          [id] => 102694

          [key] => _wcj_custom_payment_gateway_input_fields

          [value] => Array

          (

            [pay_by_po] => 123456789

          )

        )


[pay_by_po]你知道我怎样才能得到它的值吗123456789?任何帮助是极大的赞赏。谢谢。


皈依舞
浏览 92回答 1
1回答

潇潇雨雨

WC_data您可以使用methodget_meta_data()获取和取消保护此嵌套元数据,该方法提供一个WC_Meta_Data对象数组:$meta_data = $order->get_meta_data(); print_r($order_data);然后在每个WC_Meta_Data对象上,您可以使用WC_Meta_Data可用的方法,例如get_data()提供不受保护的数据数组:foreach( $order->get_meta_data() as $meta_data_obj ) {    $meta_data_array = meta_data_obj->get_data();    print_r($meta_data_array);    $meta_key   = $meta_data_array['key']; // The meta key    $meta_value = $meta_data_array['value']; // The meta value}WC_Data您还可以使用特定元键中的方法get_meta()直接从订单中获取任何嵌套元数据,如下所示:$meta_value = $order->get_meta('_wcj_custom_payment_gateway_input_fields'); print_r($meta_value);注意 此嵌套元数据自 WooCommerce 版本 3 起就存在。关于抽象WC_Data类它是由使用相同 CRUD 模式的类实现的。直接已知子类:WC_Abstract_Legacy_Order , WC_Abstract_Legacy_Product, WC_Customer_Download, WC_Customer_Download_Log, WC_Legacy_Coupon, WC_Legacy_Customer, WC_Legacy_Payment_Token, WC_Legacy_Shipping_Zone, WC_Legacy_Webhook,WC_Order_Item间接已知子类:WC_Abstract_Order , WC_Coupon, WC_Payment_Token, WC_Payment_Token_CC, WC_Payment_Token_ECheck, WC_Product, WC_Product_External, WC_Product_Grouped, WC_Product_Simple, , WC_Product_Variable, WC_Product_Variation, WC_Shipping_Zone, WC_Customer, WC_Webhook, WC_Order, WC_Order_Item_Coupon, WC_Order_Item_Fee, WC_Order_Item_Product, WC_Order_Item_Shipping,WC_Order_Item_TaxWC_Order_Refund
打开App,查看更多内容
随时随地看视频慕课网APP