ホームページ >バックエンド開発 >PHPチュートリアル >新しい属性を持つ WooCommerce 製品バリエーションをプログラムで作成するにはどうすればよいですか?

新しい属性を持つ WooCommerce 製品バリエーションをプログラムで作成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-18 11:30:02348ブラウズ

How to Create WooCommerce Product Variations with New Attributes Programmatically?

プログラムで新しい属性を持つ WooCommerce 商品バリエーションを作成する

WooCommerce 3 で可変商品を操作する場合、プログラムでバリエーションを作成する必要が生じる場合があります。 。これは、新しい属性値を作成して親変数製品内に設定すると同時に実現できます。

製品バリエーションの作成

変数製品のバリエーションを作成するには、次のようにします。次のカスタム関数を使用できます:

/**
 * Create a product variation for a defined variable product ID.
 *
 * @since 3.0.0
 * @param int   $product_id | Post ID of the product parent variable product.
 * @param array $variation_data | The data to insert in the product.
 */
function create_product_variation( $product_id, $variation_data ){
    // Get the Variable product object (parent)
    $product = wc_get_product($product_id);

    $variation_post = array(
        'post_title'  => $product->get_name(),
        'post_name'   => 'product-'.$product_id.'-variation',
        'post_status' => 'publish',
        'post_parent' => $product_id,
        'post_type'   => 'product_variation',
        'guid'        => $product->get_permalink()
    );

    // Creating the product variation
    $variation_id = wp_insert_post( $variation_post );

    // Get an instance of the WC_Product_Variation object
    $variation = new WC_Product_Variation( $variation_id );

}

属性値と分類法の作成の処理

関数内で、属性値のチェックと作成を処理することで機能を強化します。

// Iterating through the variations attributes
foreach ($variation_data['attributes'] as $attribute => $term_name )
{
    $taxonomy = 'pa_'.$attribute; // The attribute taxonomy

        // If taxonomy doesn't exists we create it (Thanks to Carl F. Corneil)
        if( ! taxonomy_exists( $taxonomy ) ){
            register_taxonomy(
                $taxonomy,
               'product_variation',
                array(
                    'hierarchical' => false,
                    'label' => ucfirst( $attribute ),
                    'query_var' => true,
                    'rewrite' => array( 'slug' => sanitize_title($attribute) ), // The base slug
                ),
            );
        }

        // Check if the Term name exist and if not we create it.
        if( ! term_exists( $term_name, $taxonomy ) )
            wp_insert_term( $term_name, $taxonomy ); // Create the term
}

使用法

この関数を利用するには、変数プロダクト ID と次のデータ配列を指定します:

// The variation data
$variation_data =  array(
    'attributes' => array(
        'size'  => 'M',
        'color' => 'Green',
    ),
    'sku'           => '',
    'regular_price' => '22.00',
    'sale_price'    => '',
    'stock_qty'     => 10,
);

結論

この機能により、新しい属性値を持つ製品バリエーションをプログラムで作成し、親変数 product 内にシームレスに設定できるようになりました。

以上が新しい属性を持つ WooCommerce 製品バリエーションをプログラムで作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。