Привет. У меня возникла проблема при изменении цены товара при добавлении в корзину.
Итак: при добавлении в корзину у меня посылается Ajax запрос на сервер, который принимает новую цену товара и записывает его в куки:
function add_constructor_card(){
$product_id = 9570;
setcookie('add_custom_price', (int)$_POST['price'], time() + 60 * 60 * 24 * 2, '/');
setcookie('constructor_sostav', $_POST['name'], time() + 60 * 60 * 24 * 2, '/');
wp_die();
}
add_action('wp_ajax_add_constructor_card', 'add_constructor_card');
add_action('wp_ajax_nopriv_add_constructor_card', 'add_constructor_card');
Далее я вешаю функцию изменения цены на хук woocommerce_before_calculate_totals
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price' );
function add_custom_price( $cart_object ) {
$new_price = $_COOKIE['add_custom_price'];
$target_product_id = 9570;
foreach ( $cart_object->cart_contents as $key => $value ) {
if ( $value['product_id'] == $target_product_id ) {
$value['data']->set_price($new_price);
}
}
}
Если перейти в корзину, все нормально и работает, но у меня в шаблоне работает стандартный виджет woo: WC_Widget_Cart и вот с ним проблема, в нем выводится товар со стандартной ценой, но если в этом виджете изменить количество товара, то отображается уже нужная цена. Подскажите, возможно кто-то сталкивался с подобным? Тоесть получается что этот хук не вешается на виджет самого woocommerce.((((