我们为 WooCommerce 安装了另一个名为
Booster Plus for WooCommerce
的插件,该插件可以通过 checkout page
支付订单来修改 invoice 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] => [email protected]
[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
)
)
[data:protected] => Array
(
[id] => 102694
[key] => _wcj_custom_payment_gateway_input_fields
[value] => Array
(
[pay_by_po] => 123456789
)
)
)
[coupon_lines] => Array
()
)
你知道我怎样才能得到
[pay_by_po]
的值吗?即123456789
?任何帮助是极大的赞赏。谢谢你。
WC_data
方法 get_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_Tax
, WC_Order_Refund