代码之家  ›  专栏  ›  技术社区  ›  Randy Hall

Woomerce登录时删除购物车项目不删除项目

  •  1
  • Randy Hall  · 技术社区  · 6 年前

    玩弄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 为零成功。无论我在这里再次查询购物车项目并返回它们,还是只是刷新页面,所有项目仍在购物车中。

    零服务器缓存 我知道-我所知道的一切,我都特别关闭了这个沙箱。


    在新的会议中,这似乎确实如预期的那样起作用。出于某种原因,当我以站点管理员身份登录时,我无法清除购物车,并且服务器上没有任何类似的错误记录。

    0 回复  |  直到 5 年前