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の商品追加をプログラムから行う

Posted at

なにこれ

WooCommerceの商品追加をプログラムから動的に行いたい時にどうすればよいのかについて書いたもの
バリエーションのある商品を対象とする。

そのメモ

コード(結論)


// 新しい可変商品を作成
$product = new WC_Product_Variable();

// 商品情報を設定
$product->set_name( '可変商品名' ); // 商品名を設定
$product->set_description( '商品説明' ); // 商品説明を設定
$product->set_regular_price( '1000' ); // 通常価格を設定
$product->set_status( 'publish' ); // 公開状態を設定

// 商品バリエーションを作成
$attribute1 = new WC_Product_Attribute();
$attribute1->set_name( 'color' );
$attribute1->set_options( array( 'red', 'green', 'blue' ) );
$attribute1->set_visible( true ); // フロントエンドで表示するかどうか
$attribute1->set_variation( true ); // バリエーションで使用するかどうか

$attribute2 = new WC_Product_Attribute();
$attribute2->set_name( 'size' );
$attribute2->set_options( array( 'small', 'medium', 'large' ) );
$attribute2->set_visible( true ); // フロントエンドで表示するかどうか
$attribute2->set_variation( true ); // バリエーションで使用するかどうか

$product->set_attributes( array( $attribute1, $attribute2 ) ); // 属性を設定

// 商品の保存、商品IDの取得
$product_id = $product->save();

// 商品バリエーションを追加
$variation = new WC_Product_Variation();
$variation->set_attributes( array(
    'color' => 'red',
    'size' => 'small'
) ); // 属性を設定
$variation->set_regular_price( '1100' ); // 通常価格を設定
$variation->set_parent_id( $product_id  ); // 商品との紐づけ
$variation->save();

// 商品の更新
$product->save();

手順とか

  • 商品を登録する
  • バリエーションで利用する属性を追加する
  • 属性で定義したものをキーにバリエーションを作成する
  • 作成したバリエーションと商品ID(post_id)を紐づける

気になるところ

既存の属性を利用する場合はどうすればいいのか?
多分WC_Product_Attributeのインスタンスを作るときに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?