首頁 >後端開發 >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