2017-04-24 7 views
2

注文の明細を取得しようとしています。オーダーアイテムへのアクセスWoocommerce 3で保護されたデータ

私はこれやってる:

$order = new WC_Order(147); 
foreach ($order->get_items() as $key => $lineItem) { 
    print_r('<pre>----'); 
    print_r($lineItem); 
    print_r('----</pre>'); 
} 

を私は必要なすべてのデータを見ることができますが、配列はこのことを示しています

[meta_data:protected] => Array 

私は、この配列は値を取得するためにアクセスすることができますどのように?

ありがとうございました。

+1

に位置している私はそれにアクセスすることができました:$ lineItem-> get_meta_data() – bstras21

+0

WooCommerce 3.0以上で、注文アイテムのメタデータに関連する説明と複数の選択肢を使用して、私の更新された回答を見ることができたら – LoicTheAztec

答えて

8

注文アイテムのためのWooCommerce 3.0以降では、新しいオブジェクトクラスWC_Order_Item_Productがあります。今すぐ注文項目のプロパティは、あなたの出力生データを見ればあなたが各ラインアイテムが今オブジェクトであり、あなたがアクセスできるようになることがわかります

以前のように直接アクセスすることはできません

  1. WC_Order_Item_Productゲッターメソッド(またはセッターメソッドでそれを変更するには)...
  2. wc_get_order_item_meta()専用の機能:それは排他的に使用してデータを保護しました。このデータの保護を解除し、方法を使用してアレイを介してそれにアクセスする
  3. WC_Dataゲッターメソッド:
    • get_data()(この方法が最も有用である)
    • get_data_keys()
    • get_meta_data()

WC_Order_Item_Productゲッターメソッド

// Get an instance of the WC_Order object 
$order = wc_get_order(147); 

// Iterating through each order item 
foreach ($order->get_items() as $item_id => $item_obj) { 
    echo $item_obj->get_type().'<br>'; // The order item type 
    echo $item_obj->get_product_id().'<br>'; // The Product ID 
    echo $item_obj->get_variation_id().'<br>'; // The variation ID 
    echo $item_obj->get_quantity().'<br>'; // Line item quantity 
    echo $item_obj->get_subtotal().'<br>'; // Line item subtotal 
    echo $item_obj->get_total().'<br>'; // Line item total 

    // The associated product object (which properties can't be accessed directly too) 
    echo '<pre>'; print_r($item_obj->get_product()); echo '</pre>'; 

    // ... and so on ... 

    ## Testing raw output 
    // echo '<pre>'; print_r($item_obj); echo '</pre>'; 
} 

wc_get_order_item_meta()機能。ここでは、wp_woocommerce_order_itemmetaテーブルと出力(line_itemデータ型項目ID用)に対応するmeta_keyを使用してアイテムIDの任意のデータに行くことができます:

// Get an instance of the WC_Order object 
$order = wc_get_order(147); 

// Iterating through each order item 
foreach ($order->get_items() as $item_id => $item_obj) { 

    echo wc_get_order_item_meta($item_id, '_product_id', true). '<br>'; // Product ID 
    echo wc_get_order_item_meta($item_id, '_variation_id', true). '<br>'; // Variation ID 
    echo wc_get_order_item_meta($item_id, '_qty', true). '<br>'; // quantity 
    echo wc_get_order_item_meta($item_id, '_line_subtotal', true). '<br>'; // Line subtotal 

    // ... and so on ... 

    ## Testing raw output 
    // echo '<pre>'; print_r($item_obj); echo '</pre>'; 
} 

WC_Data方法(ここで私はget_data()メソッドを使用します):

// Get an instance of the WC_Order object 
$order = wc_get_order(147); 

// Iterating through each order item 
foreach ($order->get_items() as $item_id => $item_obj) { 

    // Get the most useful Item product data in an accessible array 
    $item_data = $item_obj->get_data(); 

    echo $item_data['id'].'<br>'; // The order item ID 
    echo $item_data['order_id'].'<br>'; // The order ID 
    echo $item_data['product_id'].'<br>'; // The Product ID 
    echo $item_data['variation_id'].'<br>'; // The Variation ID 
    echo $item_data['name'].'<br>'; // The Product title (name) 
    echo $item_data['quantity'].'<br>'; // Line item quantity 
    echo $item_data['subtotal'].'<br>'; // Line item subtotal 
    echo $item_data['total'].'<br>'; // Line item total 

    // ... and so on ... 

関連:How to get WooCommerce order details

1

取得するには[meta_data:protected] => Arrayのデータ別の方法を使用する必要があります。

ただ、次のように二度、それらを反復処理、それらを得るために、より詳細な方法でこの$item_obj->get_meta_data();

を使用します。メソッドの

$order = wc_get_order($order_id); 
    foreach ($order->get_items() as $item_id => $item_obj) { 

     $kua = $item_obj->get_meta_data(); 

     foreach ($kua as $key => $value) { 
      foreach ($value as $key2 => $value2) { 
       echo $key2.'->'.$value2.'<br>'; 
      } 
     } 
    } 

コレクションはhere

関連する問題