为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
皈依舞 2023-09-08 14:31:02
我们已经安装了另一个名为 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?任何帮助是极大的赞赏。谢谢。
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

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_ProductWC_Customer_DownloadWC_Customer_Download_LogWC_Legacy_CouponWC_Legacy_CustomerWC_Legacy_Payment_TokenWC_Legacy_Shipping_ZoneWC_Legacy_Webhook,WC_Order_Item

间接已知子类:
WC_Abstract_Order , WC_CouponWC_Payment_TokenWC_Payment_Token_CCWC_Payment_Token_ECheckWC_ProductWC_Product_ExternalWC_Product_GroupedWC_Product_Simple, , WC_Product_VariableWC_Product_VariationWC_Shipping_ZoneWC_CustomerWC_WebhookWC_OrderWC_Order_Item_CouponWC_Order_Item_FeeWC_Order_Item_ProductWC_Order_Item_Shipping,WC_Order_Item_TaxWC_Order_Refund


查看完整回答
反对 回复 2023-09-08
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信