以编程方式创建具有新属性的 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中文网其他相关文章!