Home  >  Article  >  Backend Development  >  How to Create a Variable Product and Add New Attribute Values Programmatically in WooCommerce?

How to Create a Variable Product and Add New Attribute Values Programmatically in WooCommerce?

DDD
DDDOriginal
2024-11-09 18:42:02841browse

How to Create a Variable Product and Add New Attribute Values Programmatically in WooCommerce?

Create a Variable Product and Add New Attribute Values Programmatically in WooCommerce

WooCommerce offers a flexible framework for managing products, including the ability to create product variations with unique attribute values. This guide will demonstrate how to programmatically create a WooCommerce variable product and add new attribute values to it.

1. Create a Variable Product:

Assuming you have a parent or variable product ID, you can create a new product variation using the following code:

function create_product_variation($product_id, $variation_data) {
    // Get the parent variable product object
    $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()
    );

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

    // Create an instance of the variation object
    $variation = new WC_Product_Variation($variation_id);
    ...
}

2. Add New Attribute Values:

For each attribute and value you want to add, you'll need to check if the term exists and create it if not:

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

    // Check if the term exists
    if (!term_exists($term_name, $taxonomy)) {
        wp_insert_term($term_name, $taxonomy); // Create the term
    }

    $term_slug = get_term_by('name', $term_name, $taxonomy)->slug; // Get the term slug

    // Set the attribute data in the product variation
    update_post_meta($variation_id, 'attribute_' . $taxonomy, $term_slug);
}

3. Set Additional Variation Data:

Set any additional values, such as SKU, prices, and stock, by calling the appropriate methods on the variation object:

$variation->set_sku($variation_data['sku']);
$variation->set_price($variation_data['regular_price']);
$variation->set_manage_stock(true);
$variation->set_stock_quantity($variation_data['stock_qty']);
...

4. Save the Variation:

Finally, save all the changes made to the variation:

$variation->save(); 

Example Usage:

To create a variable product with two attributes and two variations:

$parent_id = 123; // Your parent variable product ID

$variation_data_1 = array(
    'attributes' => array(
        'color' => 'Blue',
        'size' => 'Small'
    ),
    'sku' => 'VAR-1234-BLUE-SMALL',
    'regular_price' => '29.99',
    'stock_qty' => 20
);

$variation_data_2 = array(
    'attributes' => array(
        'color' => 'Green',
        'size' => 'Medium'
    ),
    'sku' => 'VAR-1234-GREEN-MEDIUM',
    'regular_price' => '39.99',
    'stock_qty' => 10
);

create_product_variation($parent_id, $variation_data_1);
create_product_variation($parent_id, $variation_data_2);

The above is the detailed content of How to Create a Variable Product and Add New Attribute Values Programmatically in WooCommerce?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn