@yatvoydomtrubashatal
Дизайню утилитарные сайтики

Как можно заменить цены в вариациях глобально?

У меня магазин с однотипными товарами. Каждый имеет одинаковые атрибуты в виде размера и варианта изготовления. В итоге имеется 16 вариаций для каждого товара.

Как можно с помощью фильтров или как-то иначе заменять стоимость вариаций для всех товаров?

Ранее я добавлял опции через плагин, но сейчас требуется чтобы каждая вариация имела свой класс доставки и другие свойства.
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
@yatvoydomtrubashatal Автор вопроса
Дизайню утилитарные сайтики
Решил

Сначала через фильтр проверяем данные, которые посылает форма. Названия атрибутов прописаны вручную.
add_filter( 'woocommerce_add_cart_item_data', 'add_cart_item_data', 10, 3 );
function add_cart_item_data( $cart_item_data, $product_id, $variation_id ) {
    $product = wc_get_product( $variation_id );
    $price = $product->get_price(); // variation price
    $variant = $_POST['attribute_pa_variant-izgotovleniya']; // option name 
    $razmer = $_POST['attribute_pa_razmer']; // option name
    if( $variant == 'bumazhnyj-poster' && $razmer == '30x40' ) {
        $cart_item_data['new_price'] = 600;
    }
    if( $variant == 'bumazhnyj-poster' && $razmer == '40x60' ) {
        $cart_item_data['new_price'] = 700;
    }
    if( $variant == 'bumazhnyj-poster' && $razmer == '50x70' ) {
        $cart_item_data['new_price'] = 800;
    }
    if( $variant == 'bumazhnyj-poster' && $razmer == '60x90' ) {
        $cart_item_data['new_price'] = 900;
    }
    return $cart_item_data;
}


Потом обновляем данные в корзине
add_action( 'woocommerce_before_calculate_totals', 'before_calculate_totals', 10, 1 );
function before_calculate_totals( $cart_obj ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
// Iterate through each cart item
foreach( $cart_obj->get_cart() as $key=>$value ) {
if( isset( $value['new_price'] ) ) {
$price = $value['new_price'];
$value['data']->set_price( ( $price ) );
}
}
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix
Java Software Engineer
Добрый день.
Вроде бы есть плагины, которые позволяют массово редактировать цены товаров.
https://www.businessbloomer.com/apply-store-wide-b...
Вот, тут есть возможность работы с вариабельными товарами:
https://wordpress.org/plugins/woo-bulk-price-update/
https://docs.woocommerce.com/document/bulk-edit-pr...

В общем, гуглите
woocommerce bulk price change
woocommerce bulk price change variable products

Как вариант, можно еще покопаться в БД и написать SQL скрипт, который заменит цены. Ну или написать рнр скрипт (плагин), который позволит это сделать из админки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы