Изменение цен на товары в корзине на основе определенного значения атрибута продукта в Woocommerce
Я пытаюсь изменить цену товара в корзине, используя следующую функцию:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10);
function add_custom_price( $cart_obj ) {
foreach ( $cart_obj->get_cart() as $key => $value ) {
$item_data = $value['data'];
$price0 = $item_data->get_attributes('per_one_price');
$price = (int) $price0;
$value['data']->set_price( $num_int );
}
}
Но для любого числа, которое я задаю в качестве значения атрибута продукта для атрибута per_one_price
, я получаю число 1 в цене корзины.
3
Author: LoicTheAztec, 2018-09-03
1 answers
Обновление - Есть 2 небольшие ошибки:
- Заменить
get_attributes()
наget_attribute()
( единственное число).- Заменить
'per_one_price'
на'Per one price'
( или'per-one-price'
как пробелы заменяются тире)
Поэтому вместо этого попробуйте следующее:
add_action( 'woocommerce_before_calculate_totals', 'set_custom_item_price', 20, 1 );
function set_custom_item_price( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart->get_cart() as $cart_item ) {
// get attibute value
$new_price = $cart_item['data']->get_attribute('per-one-price');
if( ! empty( $new_price ) ){
// Set the new price
$cart_item['data']->set_price( $new_price );
}
}
}
Вводится код function.php файл вашей активной дочерней темы (или активной темы). протестировано и работает.
Создать "За одну цену" продукт атрибут:
Представление настройки цены продукта:
Атрибут продукта, установленный в продукте с его значением:
Просмотр страницы корзины с этим товаром:
2
Author: LoicTheAztec, 2018-10-01 10:27:57