在 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 获取类似订单的订单商品

在 WooCommerce 3 中获取订单商品和 WC_Order_Item_Product

Woocommerce - 获取订单商品的价格和数量。

如何从 WooCommerce 订单中更改 Paypal 项目名称?

获取 WooCommerce 订单的每个项目的产品类别

如果订单包含来自特定产品类别的商品,则为 WooCommerce 订单号添加前缀