WooCommerce remove_cart_item не удаляет элементы при входе в систему - PullRequest
0 голосов
/ 26 августа 2018

Игра с 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 *


Обновление

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

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