[英]WooCommerce - cart item data null when attempting to update quantity
Fatal error: Call to a member function get_tax_class()
在指向class-wc-cart-totals.php的第230行的空錯誤上Fatal error: Call to a member function get_tax_class()
。 似乎購物車項目數據屬性為null。 我不確定為什么,希望對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添加和刪除項目的過程就像一個超級按鈕。
一個小時的調試和整個發布后,我在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 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.