WordPress WooCommerce添加到购物车仅添加一种产品
我对WooCommerce是个新手,我搞不懂这个。 我正在创建一个自定义API(基于用户需求),并允许用户使用如下post请求登录Laravel:WordPress WooCommerce添加到购物车仅添加一种产品,wordpress,woocommerce,Wordpress,Woocommerce,我对WooCommerce是个新手,我搞不懂这个。 我正在创建一个自定义API(基于用户需求),并允许用户使用如下post请求登录Laravel: public function login (Request $req) { global $woocommerce; $v = \Validator::make($req->all(), [ 'username' => 'required|max:255', 'password' =>
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版您已经将数量硬编码为1。以下是函数:
WC()->cart->add_to_cart($productId,1,0,null,null);
在这个函数中,第二个参数是数量。所以,如果你想的话,增加数量
$qty = 2;
WC()->cart->add_to_cart($productId,$qty,0,null,null);
您已将数量硬编码为1。以下是函数:
WC()->cart->add_to_cart($productId,1,0,null,null);
在这个函数中,第二个参数是数量。所以,如果你想的话,增加数量
$qty = 2;
WC()->cart->add_to_cart($productId,$qty,0,null,null);
据我所知,您使用的代码是两个不同的会话
WC()->cart->set_session()代码>&WC()->session->set\u customer\u session\u cookie(true)
也就是说,一旦用户登录,第二个是当它添加产品到购物车。您是否检查了在未登录的情况下工作是否正常?其他可能的问题可能是主题集成,或者您打开调试模式的任何一种方式都会帮助您解决问题。据我所知,您使用的代码是两个不同的会话
WC()->cart->set_session()代码>&WC()->session->set\u customer\u session\u cookie(true)
也就是说,一旦用户登录,第二个是当它添加产品到购物车。您是否检查了在未登录的情况下工作是否正常?其他可能的问题可能是主题集成,或者您打开调试模式的任何一种方式都会帮助您解决问题。问题不在于数量,而在于您添加其他产品时,它只会替换现有产品。我知道默认方法是WC()->cart->add\u to\u cart($productId)代码>但仍然无效。会话出现问题。问题不在于数量,问题在于当您添加另一个产品时,它将只替换现有产品。我知道默认方法是WC()->cart->add\u to\u cart($productId)代码>但仍然无效。会话出现问题。仅当产品不在购物车中时添加该产品
,为什么这样做?如果您不知道,如果商品已经在购物车中,添加到购物车
将更新数量。。。但是,由于您没有调用add_to_cart
如果产品在购物车中,数量将不会更新..我的问题不是数量,假设有两个产品A和B,如果我添加A,当我添加B时,这将覆盖A仅当产品不在购物车中时添加产品,为什么这样做?如果您不知道,如果商品已经在购物车中,添加到购物车
将更新数量。。。但是,由于您没有调用add_to_cart
,如果产品在购物车中,数量将不会更新..我的问题不是数量,假设有两个产品A和B,如果我添加A,当我添加B时,这将覆盖AThanks以供回复,我已删除第二个会话,并在未登录的情况下添加产品,结果仍然是一样的。使用这个WC()->cart->set_session()
在函数add(productid)中,看看它是否有效?谢谢你的回复,我已经删除了第二个会话,并且在没有登录的情况下添加了产品,结果仍然是一样的。使用这个WC()->cart->set_session()在函数add(productid)中的code>并查看它是否有效?