以程式設計方式建立具有新屬性的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中文網其他相關文章!