Я хочу изменить общую стоимость корзины на основе значения пользовательского поля на странице оформления заказа. С помощью jQuery я запускаю « update_checkout » и получаю « woocommerce_before_calculate_totals » в функциях дочерней темы. php файл. получите там значение пользовательского поля оформления заказа и обновите цену товара в корзине. Все работает здесь, как и ожидалось, и страница оформления заказа обновляется новым Total. Когда я размещаю заказ, первоначальная цена товара указывается в цене. Я хочу, чтобы заказ изменил / обновил цену. Вот мой код
JavaScript
jQuery(document).ready(function($) {
$( document.body ).on( 'updated_checkout',function(){
$('#number_of_kids').on('change',function(){
$( document.body ).trigger( 'update_checkout');
});
});
});
PHP Woocommerce крючок
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1, 20);
function add_custom_price( $cart_obj ) {
if( isset($_POST['post_data']) ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 ) return;
parse_str($_POST['post_data'], $post_data);
foreach ( $cart_obj->get_cart() as $cart_item ) {
$newAmount = 0;
if(isset($post_data['number_of_kids']) && 10 < $post_data['number_of_kids']){
$newAmount = 100;
}
$cart_item['data']->set_price( $cart_item['data']->get_price() + $newAmount );
}
}
}
``