LoginSignup
1
0

More than 1 year has passed since last update.

WC_Order から取り出せる商品データ

Last updated at Posted at 2022-01-18

WooCommerce の注文データとなる wc_get_order($order_id)の関数によって取得できる商品データがちょっとややこしい部分があるので内容を説明します。

## 商品データの取得方法

$order = wc_get_order( $order_id );// $order_id is Post object or post ID of the order.
$products = $order->get_items( 'line_item' );// default is line_item

まずは、注文データを注文IDか注文オブジェクトで呼び出します。
そして、WC_Order のget_itemsを利用して注文に含まれる商品データ一覧を取得します。パラメーターに line_item を入れると商品データとなりますが、ブランクでもデフォルトが line_item なので商品データが出されます。ちなみに商品データ以外に以下の変数で注文内のそれぞれが抜き出せます。

  • line_item 商品データ
  • tax 税データ
  • shipping 送料データ
  • fee 手数料
  • coupon クーポン

woocommerce_order_type_to_group のフィルターフックで上記の項目が増やすことができますので、拡張プラグイン等で増やされている場合もあるので、フックを使っていないかどうかのチェックをする必要があります。

##取得できる商品データの詳細

foreach($products as $product){
    echo $product->get_product_id();
}

商品データの詳細は上記のように CRUD を利用して取得するのが良いです。
取得できるデータは以下です。

  • id 注文内での id
  • name 商品名
  • prodcut_id 商品ID
  • variation_id バリエーションID
  • quantity
  • subtotal 小計
  • subtotal_tax 小計の税金(四捨五入などの処理済みの数値)
  • total 合計
  • total_tax 合計の税金(四捨五入などの処理済みの数値)
  • taxes 税金の内訳で四捨五入などの処理がされる前の数値**(配列)**

取得できる情報は上記だけですので、カテゴリーやタグなどを取得したい場合はproduct_id から商品データを取得し直す必要があります。
ちなみに商品単価は取得できないので、合計を数量で割るなどの処理が必要になります。

小計(subtotal)と合計(total)は基本的には同じ数値になることが多いですが、様々な処理をする際に異なることがあるので、凝った処理をしている場合などは注意が必要です。

消費税などの処理が、内税などにすると商品単価が小数点の長い数値になったりする(合計が数量で割り切れない)場合もありますので、注意が必要です。なので、個人的には外税設定にすることをお勧めします。

ちなみに対象の注文 ID が無かった場合

bool で false が返されます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0