Woocommerce set_quantity падает сайт при добавлении товаров в корзину - PullRequest
0 голосов
/ 10 октября 2018

Я настроил пользовательский калькулятор в WooCommerce как новый плагин.

Из этого калькулятора я передаю свою общую цену и общее количество.Цена рассчитывается путем взятия общего квадратного дюйма продукта (это кусок ткани) и умножения его на общее количество заказанных деталей.

Но мы оцениваем стоимость доставки на основе общего веса, иустановили это, чтобы быть 0,003 / кв. дюйм.Итак, чтобы правильно рассчитать доставку, мне нужно будет передать эту информацию в корзину.Чтобы было ясно, мне нужно будет передать полные квадратные дюймы ткани в корзину, где она будет затем оценивать ее на основе этого.

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

add_action( 'woocommerce_add_cart_item_data', 'save_custom_fields_data_to_cart', 10, 2 );
function save_custom_fields_data_to_cart( $cart_item_data, $product_id ) {

    if( ! empty( $_REQUEST['custom_price'] && $_REQUEST['custom_quantity'] ) ) {
        // Set the custom data in the cart item
        if($_REQUEST['custom_price'] < 25) {
            $cart_item_data['custom_price'] = 25.00;
        } else {
            $cart_item_data['custom_price'] = $_REQUEST['custom_price'];
        }
        // Set the custom data in the cart item
        $cart_item_data['custom_quantity'] = $_REQUEST['custom_quantity'];
        // Make each item as a unique separated cart item
        $cart_item_data['unique_key'] = md5( microtime().rand() );
    }
    return $cart_item_data;
}

Но у меня возникают проблемы со следующим кодом:

add_action( 'woocommerce_before_calculate_totals', 'change_cart_item_price', 30, 1 );
function change_cart_item_price( $cart ) {
    if ( ( is_admin() && ! defined( 'DOING_AJAX' ) ) )
        return;

    // Loop through cart items
    foreach ( $cart->get_cart() as $cart_item ) {
        // Set the new price
        if( isset($cart_item['custom_price']) ){
            $cart_item['data']->set_price($cart_item['custom_price']);
        }
        //set the new quantity
        if( isset($cart_item['custom_quantity']) ) {
            $cart_item['data']->set_quantity($cart_item['custom_quantity']);
        }
    }
}

Цена прошла очень хорошо, однако, когда код достигнижняя часть:

if( isset($cart_item['custom_quantity']) ) {
                $cart_item['data']->set_quantity($cart_item['custom_quantity']);
            }

Сбой и сбой сайта.В частности, строка

$cart_item['data']->set_quantity($cart_item['custom_quantity']);

Я знаю это, потому что я быстро набрал echo "good" на своем месте, и она прошла нормально.

Я неправильно использую set_quantity?

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