Woocommerce Variant SKU

В настоящее время в Woocommerce при работе с переменными продуктами SKU необходимо определить для каждого варианта в полном объеме.

То, что я хотел бы сделать, это определить родительский SKU, а затем определить суффикс для SKU для каждого варианта, и окончательный SKU создается путем объединения родительского и суффиксного варианта.

Допустим, у меня есть родительский продукт базы SKU PRODUCT_0001SKU PRODUCT_0001 Я хотел бы определить здесь:

БАЗА

Тогда для вариантов, скажем VARIANT_AЯ хотел бы определить здесь суффиксы:

ВАРИАНТ

Теперь окончательный SKU для варианта продукта (то есть, что передается во время обработки заказа), я хотел бы представить как:

PRODUCT_0001/VARIANT_A

Таким образом, это предотвращает двойную обработку одного и того же базового кода продукта при настройке / определении множества вариантов.

Есть ли простой способ сделать это?

1 ответ

Я не пробовал это по электронной почте, но это работает в области приборной панели и внешнего интерфейса..

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;
}
Другие вопросы по тегам