Обновление - Есть 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 вашей активной дочерней темы (или активной темы). проверено и работает.
Создать "За одну цену" Атрибут продукта:
Вид установки цены товара:
Атрибут продукта, установленный в продукте со значением:
Просмотр страницы корзины с этим товаром: