产品ID在WC_Order- woocommerce中返回空

时间:2017-03-02 18:37:50

标签: wordpress woocommerce wordpress-theming

我使用的是woocomerce插件版本2.6.11,而wordpress版本是4.7.2。我尝试使用订单的产品元数据获取所有产品(order_id = 273)。我尝试过如下。但$item['product_id']返回空。没有回报。

    function custom_get_order_details($order_id){
      global $woocommerce; 


      // for test im using $order_id = 273
      $order = new WC_Order( $order_id );

      foreach ( $order->get_items() as $item_id => $item ){

          print_r($item_id);
          echo $product_id = wc_get_order_item_meta($item_id, '_product_id', true);
          echo "<br>test_30<br>";
          echo $variation_id = wc_get_order_item_meta($item_id, '_variation_id', true);
          echo $quantity = wc_get_order_item_meta($item_id, '_qty', true);

      }
      //$curl = curl_init();
      //curl post here
    }
    add_action( 'woocommerce_payment_complete', 'custom_get_order_details', 10, 1 );

如果我在for循环中打印$item。它打印

array(4) { ["name"]=> string(4) "Test" ["type"]=> string(9) "line_item" ["item_meta"]=> NULL ["item_meta_array"]=> array(9) { [1]=> object(stdClass)#823 (2) { ["key"]=> string(4) "_qty" ["value"]=> string(1) "1" } [2]=> object(stdClass)#822 (2) { ["key"]=> string(10) "_tax_class" ["value"]=> string(0) "" } [3]=> object(stdClass)#821 (2) { ["key"]=> string(11) "_product_id" ["value"]=> string(4) "2856" } [4]=> object(stdClass)#820 (2) { ["key"]=> string(13) "_variation_id" ["value"]=> string(1) "0" } [5]=> object(stdClass)#819 (2) { ["key"]=> string(14) "_line_subtotal" ["value"]=> string(3) "100" } [6]=> object(stdClass)#818 (2) { ["key"]=> string(11) "_line_total" ["value"]=> string(3) "100" } [7]=> object(stdClass)#817 (2) { ["key"]=> string(18) "_line_subtotal_tax" ["value"]=> string(1) "0" } [8]=> object(stdClass)#816 (2) { ["key"]=> string(9) "_line_tax" ["value"]=> string(1) "0" } [9]=> object(stdClass)#815 (2) { ["key"]=> string(14) "_line_tax_data" ["value"]=> string(45) "a:2:{s:5:"total";a:0:{}s:8:"subtotal";a:0:{}}" } } } 

它也是空的 - $order->get_item_meta($item_id, '_qty', true)

我不知道我错了什么。

enter image description here

enter image description here enter image description here

2 个答案:

答案 0 :(得分:3)

您可以通过

获取订单的订单商品详情
   // Getting an instance of the order object

    $order = new WC_Order( $order_id );
    $items = $order->get_items();

   //Loop through them, you can get all the relevant data:

    foreach ( $items as $item ) {
        $product_name = $item['name'];
        $product_id = $item['product_id'];
        $product_variation_id = $item['variation_id'];
    }

答案 1 :(得分:1)

  

它会$item_data而不是$item,会出现拼写错误。

echo '$item["product_id"] <i>(product ID)</i>: ' . $item_data['product_id'] . '<br>'; //<--- notice $item_data
echo '$item["name"] <i>(product Name)</i>: ' . $item_data['name'] . '<br>'; //<--- notice $item_data

更新v2

您也可以像product_id那样从item_meta键获取foreach ($items as $item_id => $item) { //.. echo $item['item_meta']['_product_id'][0]; echo $item['item_meta']['_qty'][0]; //... }

{{1}}

希望这有帮助!