在 Woocommerce 中获取订单商品名称 [重复]
Posted
技术标签:
【中文标题】在 Woocommerce 中获取订单商品名称 [重复]【英文标题】:Get the order item name in Woocommerce [duplicate] 【发布时间】:2019-03-24 04:14:13 【问题描述】:所以我有一个变量,如果我var_dump
那个变量我得到一个大数组。我正在尝试获得以下信息:
["name"]=> string(26) "Online marketing Duitsland"
整个数组结果如下所示:
array(1)
[33]=> object(WC_Order_Item_Product)#9730 (11)
["extra_data":protected]=> array(9)
["product_id"]=> int(0)
["variation_id"]=> int(0)
["quantity"]=> int(1)
["tax_class"]=> string(0) ""
["subtotal"]=> int(0)
["subtotal_tax"]=> int(0)
["total"]=> int(0)
["total_tax"]=> int(0)
["taxes"]=> array(2)
["subtotal"]=> array(0)
["total"]=> array(0)
["data":protected]=> array(11)
["order_id"]=> int(12291)
["name"]=> string(26) "Online marketing Duitsland"
["product_id"]=> int(11927)
["variation_id"]=> int(0)
["quantity"]=> int(1)
["tax_class"]=> string(0) ""
["subtotal"]=> string(4) "3700"
["subtotal_tax"]=> string(1) "0"
["total"]=> string(4) "3700"
["total_tax"]=> string(1) "0"
["taxes"]=> array(2)
["total"]=> array(0)
["subtotal"]=> array(0)
["cache_group":protected]=> string(11) "order-items"
["meta_type":protected]=> string(10) "order_item"
["object_type":protected]=> string(10) "order_item"
["id":protected]=> int(33)
["changes":protected]=> array(0)
["object_read":protected]=> bool(true)
["default_data":protected]=> array(11)
["order_id"]=> int(0)
["name"]=> string(0) ""
["product_id"]=> int(0)
["variation_id"]=> int(0)
["quantity"]=> int(1)
["tax_class"]=> string(0) ""
["subtotal"]=> int(0)
["subtotal_tax"]=> int(0)
["total"]=> int(0)
["total_tax"]=> int(0)
["taxes"]=> array(2)
["subtotal"]=> array(0)
["total"]=> array(0)
["data_store":protected]=> object(WC_Data_Store)#9723 (4)
["instance":"WC_Data_Store":private]=> object(WC_Order_Item_Product_Data_Store)#9722 (3)
["internal_meta_keys":protected]=> array(20)
[0]=> string(9) "_order_id"
[1]=> string(5) "_name"
[2]=> string(11) "_product_id"
[3]=> string(13) "_variation_id"
[4]=> string(9) "_quantity"
[5]=> string(10) "_tax_class"
[6]=> string(9) "_subtotal"
[7]=> string(13) "_subtotal_tax"
[8]=> string(6) "_total"
[9]=> string(10) "_total_tax"
[10]=> string(6) "_taxes"
[11]=> string(11) "_product_id"
[12]=> string(13) "_variation_id"
[13]=> string(4) "_qty"
[14]=> string(10) "_tax_class"
[15]=> string(14) "_line_subtotal"
[16]=> string(18) "_line_subtotal_tax"
[17]=> string(11) "_line_total"
[18]=> string(9) "_line_tax"
[19]=> string(14) "_line_tax_data"
["meta_type":protected]=> string(10) "order_item"
["object_id_field_for_meta":protected]=> string(13) "order_item_id"
["stores":"WC_Data_Store":private]=> array(20)
["coupon"]=> string(24) "WC_Coupon_Data_Store_CPT"
["customer"]=> string(22) "WC_Customer_Data_Store"
["customer-download"]=> string(31) "WC_Customer_Download_Data_Store"
["customer-download-log"]=> string(35) "WC_Customer_Download_Log_Data_Store"
["customer-session"]=> string(30) "WC_Customer_Data_Store_Session"
["order"]=> string(23) "WC_Order_Data_Store_CPT"
["order-refund"]=> string(30) "WC_Order_Refund_Data_Store_CPT"
["order-item"]=> string(24) "WC_Order_Item_Data_Store"
["order-item-coupon"]=> string(31) "WC_Order_Item_Coupon_Data_Store"
["order-item-fee"]=> string(28) "WC_Order_Item_Fee_Data_Store"
["order-item-product"]=> string(32) "WC_Order_Item_Product_Data_Store"
["order-item-shipping"]=> string(33) "WC_Order_Item_Shipping_Data_Store"
["order-item-tax"]=> string(28) "WC_Order_Item_Tax_Data_Store"
["payment-token"]=> string(27) "WC_Payment_Token_Data_Store"
["product"]=> string(25) "WC_Product_Data_Store_CPT"
["product-grouped"]=> string(33) "WC_Product_Grouped_Data_Store_CPT"
["product-variable"]=> string(34) "WC_Product_Variable_Data_Store_CPT"
["product-variation"]=> string(35) "WC_Product_Variation_Data_Store_CPT"
["shipping-zone"]=> string(27) "WC_Shipping_Zone_Data_Store"
["webhook"]=> string(21) "WC_Webhook_Data_Store"
["current_class_name":"WC_Data_Store":private]=> string(32) "WC_Order_Item_Product_Data_Store"
["object_type":"WC_Data_Store":private]=> string(18) "order-item-product"
["meta_data":protected]=> array(0)
我如何获得那个特定的部分?
【问题讨论】:
查看此解决方案在 Woocommerce 3 中获取订单商品和 WC_Order_Item_Product 首先,您需要使用 foreach 循环,然后在其中使用get_name()
方法,例如:foreach( $order->get_items() as $item ) echo $item->get_name();
... 或者如果您只有一个订单项: $items = $order->get_items(); $item = reset( $items ); echo $item->get_name();
@LoicTheAztec 非常感谢这对我有帮助。
【参考方案1】:
要么尝试:-
echo $arr[33]->data->name;
或者试试:-
$arr = (Array)$arr;//cast the object as an Array
echo $arr[33]["\0*\0" . 'data']['name'];
更多支持和理解:-Access Private and Protected Properties of Objects in php
【讨论】:
它不会工作,数据是受保护的财产【参考方案2】:使用 get_name() 方法
$var[33]->get_name();
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item.html#_get_name
【讨论】:
var_dump($order->get_items()[33]->get_name()) 我试过这个,它在我休息之前有效..当我回来时出现错误。我很困惑 可能已经不是33了 你从哪里得到这个变量的? 我最终采用了@LoicTheAztec 的方式。感谢您的帮助,非常感谢。以上是关于在 Woocommerce 中获取订单商品名称 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 WooCommerce 3 中获取订单商品和 WC_Order_Item_Product