WordPress WooCommerce添加到购物车只添加一个产品

时间:2016-03-07 04:12:38

标签: wordpress woocommerce

我对WooCommerce很陌生,我无法弄清楚这一点。 我正在创建一个自定义API(根据用户要求),我让用户使用这样的发布请求登录Laravel:

public function login (Request $req)
{
    global $woocommerce;
    $v = \Validator::make($req->all(), [
        'username' => 'required|max:255',
        'password' => 'required|max:255',
    ]);
    if ($v->passes())
    {
        $user = wp_signon(['user_login'=>$req->input("username"),"user_password"=>$req->input("password")],true);
        if (is_wp_error($user) || !is_user_logged_in())
        {
            return response(['success' => false, 'message' => "Invalid Username or Password."], 401);
        }
        $key = md5($user->ID . $user->user_login. (time() + 7200) . $user->email);
        $cookie = wp_generate_auth_cookie($user->ID, (time() + 7200), "auth", $key);
        $store = [
            'user_login'      => $user->data->user_login,
            'user_id'         => $user->data->ID,
            'user_nicename'   => $user->data->user_nicename,
            'user_email'      => $user->data->user_email,
            'user_url'        => $user->data->user_url,
            'user_registered' => $user->data->user_registered,
            'display_name'    => $user->data->display_name,
        ];
        Session::push($cookie, $store);
        WC()->cart->set_session();
        return response(['auth_token' => $cookie, 'success' => true, 'cart'=>WC()->cart->get_cart_for_session(), 'timeout' => 7200], 200);
    }
    return response(['success' => false, 'message' => "Required field(s) missing."], 401);
}

现在,每当我将产品添加到购物车时,它只会替换以前的值,并且只有一个商品会添加到购物车中。当我登录我的WordPress网站并访问购物车时,它显示错误“未定义的索引”,而购物车是空的。这是将项目添加到购物车的代码:

public function add($productId)
{
    //WC()->session->set_customer_session_cookie(true);
    $cart_id = WC()->cart->generate_cart_id( $productId );
    $prod_in_cart = WC()->cart->find_product_in_cart( $cart_id );
    // Add the product only if it's not in the cart already
    if( ! $prod_in_cart ) 
    {
        WC()->cart->add_to_cart($productId,1,0,null,null);
    }
    return response([
        'user'=>WC()->session->get_customer_id(),
        'cart'=>WC()->cart,
    ]);
}

我知道我做错了什么但不知道是什么。任何帮助将不胜感激。

修改

如果它有助于我使用WooCommerce版本2.3

2 个答案:

答案 0 :(得分:0)

您已将数量硬编码为1.以下是功能:

 WC()->cart->add_to_cart($productId,1,0,null,null);

在此功能中,第二个参数是数量。如果你愿意,可以提高数量。

$qty = 2;
WC()->cart->add_to_cart($productId,$qty,0,null,null);

答案 1 :(得分:0)

据我见过您的代码,您正在使用两个不同的会话

WC()->cart->set_session();& WC()->session->set_customer_session_cookie(true)

I.E用户登录后,第二个用户将产品添加到购物车。您是否在没有登录的情况下检查是否完美无缺?其他可能的问题是主题集成或者你要调试模式 ON 的任何一种方法都可以帮到你解决问题的地方。