玩弄WooCommerce,试图在自定义api实现中调用remove item。
我得到的购物车项目如下:
$ret = array();
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
$product = $values['data'];
$p = array(
'cart_item_key' => $item,
'id' => $product->get_id(),
'name' => $product->get_name(),
'slug' => $product->get_slug(),
'price' => $product->get_price(),
'description' => $product->get_description(),
'short_description' => $product->get_short_description(),
'permalink' => get_permalink( $product->get_id() ),
'quantity' => $values['quantity']
);
$ret[] = $p;
}
return $ret;
给了我一个干净的数组,我可以在响应中看到。
然后我把
cart_item_key
$payload = $request->get_params();
$ret = array();
global $woocommerce;
if ($payload['cart_item_key']){
$cartItemKey = WC()->cart->find_product_in_cart( $payload['cart_item_key'] );
$woocommerce->cart->remove_cart_item( $cartItemKey );
unset( $woocommerce->cart->cart_contents[$cartItemKey] );
}
return $ret;
我看得出来
$payload['cart_item_key']
$cartItemKey
是
相同的字符串值
,所以我99.8%确定我有正确的值可以传递。
remove_cart_item
和
unset
方法是我见过的两种不同的实现,它们似乎都没有效果。我也试过用
WC()
$woocommerce
为零成功。无论我在这里再次查询购物车项目并返回它们,还是只是刷新页面,所有项目仍在购物车中。
有
零服务器缓存
我知道-我所知道的一切,我都特别关闭了这个沙箱。
在新的会议中,这似乎确实如预期的那样起作用。出于某种原因,当我以站点管理员身份登录时,我无法清除购物车,并且服务器上没有任何类似的错误记录。