目前在Woocommerce中,处理可变产品时,需要为每个变体定义完整的SKU。
我想要做的是定义一个父SKU,然后为每个变体定义SKU的后缀,最后的SKU是通过连接父加上变量后缀生成的。
所以我想说我有一个基本SKU PRODUCT_0001
的父产品,SKU PRODUCT_0001
我想在这里定义:
然后对于变体,比如说VARIANT_A
,我想在这里定义后缀:
现在是产品变体的最终SKU(即在订单工作流程中传输的内容),我想表示为:
PRODUCT_0001/VARIANT_A
这样,在设置/定义许多变体时,这可以防止对同一基本产品代码进行双重处理。
有没有一种简单的方法可以实现这一目标?
答案 0 :(得分: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;
}