web-dev-qa-db-ja.com

woocommerce 3で注文アイテムのメタデータを取得する

製品woocommerceのメタデータを取得する方法私は自分の製品にフィールドカスタムがあり、このデータを取得する必要があります。

_{"ID":151,
 "ORDER_ID":251,
 "NAME":"car",
 "PRODUCT_ID":87,
 "VARIATION_ID":0,
 "QUANTITY":1,
 "TAX_CLASS":"",
 "SUBTOTAL":"3",
 "SUBTOTAL_TAX":"0",
 "TOTAL":"3",
 "TOTAL_TAX":"0",
 "TAXES":{"TOTAL":[],
          "SUBTOTAL":[]},
 "META_DATA":[{"ID":1433,
               "KEY":"my_car",
               "VALUE":"red"}]}
_

しかし、常に結果は同じです。フィールド_meta_data_にアクセスできません。フィールドIDおよびnameにアクセスできます。

get_data()get_item()を使用しましたが、_get_data()を使用してフィールド_meta_data_にアクセスしようとすると、このエラーが発生します。

_ UNCAUGHT ERROR: CANNOT USE OBJECT OF TYPE WC_DATETIME AS ARRAY IN  
_

get_item()では、保護されているため、値_meta_data_はnullです。

これらの値を取得するにはどうすればよいですか?

7
Manu

以下を試してください:

// Get the $order object from an ID (if needed only)
$order = wc_get_order( $order_id);

// Loop through order line items
foreach( $order->get_items() as $item ){
    // get order item data (in an unprotected array)
    $item_data = $item->get_data();

    // get order item meta data (in an unprotected array)
    $item_meta_data = $item->get_meta_data();

    // get only additional meta data (formatted in an unprotected array)
    $formatted_meta_data = $item->get_formatted_meta_data();

    // Display the raw outputs (for testing)
    echo '<pre>'; print_r($item_meta_data); echo '</pre>';
    echo '<pre>'; print_r($formatted_meta_data); echo '</pre>';
}

関連:

12
LoicTheAztec