首页 >后端开发 >php教程 >如何以编程方式创建具有新属性的 WooCommerce 产品变体?

如何以编程方式创建具有新属性的 WooCommerce 产品变体?

Linda Hamilton
Linda Hamilton原创
2024-11-18 11:30:02361浏览

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,
);

结论

通过此功能,您现在可以以编程方式创建具有新属性值的产品变体,并将它们无缝地设置在父变量产品中。

以上是如何以编程方式创建具有新属性的 WooCommerce 产品变体?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn