0

目前在 Woocommerce 中,在处理可变产品时,需要为每个变体完整定义 SKU。

我想做的是定义一个父 SKU,然后为每个变体定义 SKU 的后缀,最终的 SKU 是通过连接父 SKU 和变体后缀来产生的。

所以假设我有一个 base SKU 的父产品,我想在这里定义PRODUCT_0001的 SKU :PRODUCT_0001

根据

然后对于变体,比如说VARIANT_A,我想在这里定义后缀:

变体

现在产品变体的最终 SKU(即在订单工作流程中传输的内容),我想表示为:

PRODUCT_0001/VARIANT_A

这样,可以防止在设置/定义许多变体时重复处理相同的基本产品代码。

有没有简单的方法来实现这一点?

4

1 回答 1

0

我没有在电子邮件上尝试过,但这适用于仪表板区域和前端..

add_filter( 'woocommerce_get_sku', 'reigel_woocommerce_get_sku', 10, 2 );
function reigel_woocommerce_get_sku( $sku, $product ){
    // remove current filter to prevent unli loop on get_sku()
    remove_filter( current_filter(), __FUNCTION__ ); 
    if ( $product->get_type() === 'variation' ) {
        $parent = $product->parent->id?$product->parent->id:$product->get_parent();
        $sku = wc_get_product($parent)->get_sku() . '/' . $sku;
    }
    add_filter( 'woocommerce_get_sku', 'reigel_woocommerce_get_sku', 10, 2 );
    return $sku;
}

在变体上禁用 sku 唯一性...

add_filter( 'wc_product_has_unique_sku', 'reigel_wc_product_has_unique_sku', 10, 3 );
function reigel_wc_product_has_unique_sku( $sku_found, $product_id, $sku ) {
    $product = wc_get_product($product_id);
    if ( $product->get_type() === 'variation' ) {
        $sku_found = false;
    }
    return $sku_found;
}
于 2016-03-17T07:57:47.897 回答