Игра с WooCommerce, попытка вызвать удаление элемента в пользовательской реализации API.
Я могу успешно получить список элементов корзины и добавить элементы в корзину аналогичным образом. Тем не менее, несмотря на то, что код почти идентичен в каждом руководстве, которое я могу найти, я не могу получить элемент корзины, который нужно удалить.
Я получаю в корзине что-то вроде этого:
$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
для достижения нулевого успеха. Независимо от того, запрашиваю ли я здесь элементы корзины и возвращаю их или просто обновляю страницу, все элементы все еще находятся в корзине.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1028 *
Обновление
Похоже, что это работает должным образом в новой сессии. По какой-то причине, когда я вошел в систему как администратор сайта, я не могу очистить свою корзину, и на сервере ничего подобного не регистрируется.