Изменение цены товара в корзине Woocommerce не влияет на цену заказа - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу изменить общую стоимость корзины на основе значения пользовательского поля на странице оформления заказа. С помощью 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 );
        }
    }
}
``

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...