我是WooCommerce的新手,我無法弄清楚這一點。 我創建一個自定義的API(可根據用戶要求),我使用POST請求這樣讓用戶登錄在Laravel:WordPress WooCommerce添加到購物車只能添加一個產品
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
'僅當產品不在購物車中時才添加產品,爲什麼要這樣做?如果您不知道,如果商品已在購物車中,則add_to_cart將會更新數量......但是如果您沒有調用add_to_cart,則商品數量不會更新。 – Reigel
我的問題不在於數量,可以說有2個產品A和B,如果我加了A,當我加B時,這個覆蓋A – Tahir