WooCommerce - пустые данные корзины при попытке обновить количество - PullRequest
0 голосов
/ 22 февраля 2019

Fatal error: Call to a member function get_tax_class() при нулевой ошибке, указывающей на строку 230 class-wc-cart-totals.php.Похоже, свойство данных элемента корзины равно нулю.Я не уверен, почему, надеясь, что кто-то, кто лучше разбирается в интуиции WooCommerce, может указать мне верное направление.

Здесь представлены несколько уникальные настройки, я создал пользовательские конечные точки API для обработки большинства взаимодействий WooCommerce со стороны клиента.

Я получаю эту ошибку при попытке обновить количество товара.

/*Cart controls*/
function my_add_to_cart($request){
    $payload = $request->get_params();

    if ($payload['product_id']){
        $cart_item_key = WC()->cart->add_to_cart( $payload['product_id'], $payload['quantity'] );
    }

    return my_get_cart()[$cart_item_key];
}
function my_remove_cart_item($request){
    $payload = $request->get_params();

    if ($payload['cart_item_id']){
        $payload['success'] = WC()->cart->remove_cart_item( $payload['cart_item_id'] );
    } else {
        $payload['success'] = false;
    }

    return $payload;
}
function my_update_cart_item_quantity($request){

    $payload = $request->get_params();
    if ($payload['cart_item_id']){

        /*This is where the error is triggered in my API */
        $payload['success'] = WC()->cart->set_quantity( $payload['id'], $payload['quantity'], true );

    } else {
        $payload['success'] = false;
    }

    return $payload;
}

И здесь происходит внутренняя ошибка:

get_items_from_cart(){
    $this->items = array();

    foreach ( $this->cart->get_cart() as $cart_item_key => $cart_item ) {
        $item                          = $this->get_default_item_props();
        $item->key                     = $cart_item_key;
        $item->object                  = $cart_item;
        $item->tax_class               = $cart_item['data']->get_tax_class();
        /*This line here*/
        $item->taxable                 = 'taxable' === $cart_item['data']->get_tax_status();
        $item->price_includes_tax      = wc_prices_include_tax();
        $item->quantity                = $cart_item['quantity'];
        $item->price                   = wc_add_number_precision_deep( $cart_item['data']->get_price() * $cart_item['quantity'] );
        $item->product                 = $cart_item['data'];
        $item->tax_rates               = $this->get_item_tax_rates( $item );
        $this->items[ $cart_item_key ] = $item;
    }
}

Так что, очевидно, $cart_item['data'] здесь не создается должным образом, но я не понимаю, почему.

Я просто в растерянности на данный момент.Я надеюсь, что что-то я сделал явно неправильно и могу исправить, прежде чем я начну исправлять ошибки разработчиков по поводу возможной .. ошибки ...

Примечание: добавление и удаление элементов через мойAPI работает как шарм.

1 Ответ

0 голосов
/ 22 февраля 2019

Час отладки и весь этот пост, это несоответствующий параметр, который я нахожу через 35 секунд:

   $payload['success'] = WC()->cart->set_quantity( $payload['id'], $payload['quantity'], true );

должно быть

   $payload['success'] = WC()->cart->set_quantity( $payload['cart_item_id'], $payload['quantity'], true );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...