0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WooCommerce の商品 ID からバリエーション ID を取得する

Posted at

$product_id からその商品に登録しているバリエーションの情報が欲しいと思って、サクッと取れると思ったら、そういう関数が無いことに気がついてその取得方法を備忘録として書いております。

まずは商品がバリエーションを持っているかの判別

商品にバリエーションがない場合は探す必要がないと思うので、まずはその判別の方法。
これは、簡単で商品オブジェクトの is_type 関数を使えばいいです。

$product = wc_get_product( $product_id );
if( $product->is_type( 'variable' ) ){
...
}

バリエーションを持っている商品 ID から get_posts で取得

WordPress のちょー基本的なやり方でしか抜き出せなさそうです。

$args = array(
    'post_type'     => 'product_variation',// *1
    'post_status'   => array( 'private', 'publish' ),// *2
    'numberposts'   => -1,// *3
    'orderby'       => 'menu_order',// *4
    'order'         => 'asc',// *4
    'post_parent'   => $product_id
);
$variations = get_posts( $args );

foreach ( $variations as $variation ) {
    // get variation ID
    $variation_IDs[] = $variation->ID;
}

上記に記載の*を簡単に説明すると以下です。

*1の説明

バリエーションとして登録されているカスタム投稿タイプが'product_variation'なので検索タイプの変数をこれにします。

*2の説明

実際に使われているステータスを抜き出します。

*3の説明

念のために取得する数の制限を無くす。

*4の説明

取得の順番を指定されている通りにする。

これで、 $variation_IDs の配列にバリエーション ID 一覧が出来ます。

0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?