Woocommerce не может обновить обзор заказа после изменения итогов корзины - PullRequest
0 голосов
/ 14 января 2020

Я изменил итоги корзины в Woocommerce, используя следующий код, и теперь у меня проблемы со страницей оформления заказа, в частности с функцией update_order_review

add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 10, 1);
function add_custom_price( $cart_object ) 
{

    if (is_admin() && ! defined( 'DOING_AJAX' ))
    {
        return;
    }
    if (did_action('woocommerce_before_calculate_totals' ) >= 2)
    {
        return;
    }
    foreach($cart_object->get_cart() as $cart_item )
    {
        ## Price calculation ##
        $price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];

        ## Set the price with WooCommerce compatibility ##
        if(version_compare( WC_VERSION, '3.0', '<' )) 
        {
            $cart_item['data']->price = $price; // Before WC 3.0
        } 
        else 
        {
            $cart_item['data']->set_price( $price ); // WC 3.0+
        }
    }
}

Я знаю, что мне нужен еще один шаг, чтобы изменить некоторые из код, потому что когда я удаляю функцию, woocommerce может обновить обзор заказа.

Я получаю wc_ajax=update_order_review 502 (Bad Gateway)

Может кто-нибудь помочь мне решить проблему. Спасибо.

1 Ответ

0 голосов
/ 14 января 2020

Возможно, вы получили ошибку сервера, потому что этот код недостаточно осторожен:

$price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];

Возможно, сначала попробуйте убедиться, что в массиве есть настраиваемые поля:

if ( !empty($cart_item['adult_add_on']) && !empty($cart_item['child_add_on'])  && !empty($cart_item['infant_add_on']) ) {

$price = $cart_item['data']->price*$cart_item['adult_add_on'] + $cart_item['data']->price*$cart_item['child_add_on'] + $cart_item['data']->price*0.75*$cart_item['infant_add_on'];

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