Php WooCommerce购物车验证:检查是否始终在添加其他产品之前添加特定产品

Php WooCommerce购物车验证:检查是否始终在添加其他产品之前添加特定产品,php,wordpress,validation,woocommerce,cart,Php,Wordpress,Validation,Woocommerce,Cart,说明: 我有一个用例,在客户向购物车添加其他产品之前,我需要检查特定产品是否已添加到购物车 背景: 我们根据包装(即产品)出租产品。包装包括多种产品,产品没有价格,包装有。所以,基本上你需要添加一个包(有价格)和产品(没有价格)到购物车 问题: 目前,客户可以在包装前添加产品,并且他们可以继续使用购物车,总计为零 我所取得的一些进步: 如果(!WC()->购物车->为空() foreach(WC()->cart->get_cart()作为$cart_项目) //现在我需要检查购物车是否包含一个包

说明:

我有一个用例,在客户向购物车添加其他产品之前,我需要检查特定产品是否已添加到购物车

背景:

我们根据包装(即产品)出租产品。包装包括多种产品,产品没有价格,包装有。所以,基本上你需要添加一个包(有价格)和产品(没有价格)到购物车

问题:

目前,客户可以在包装前添加产品,并且他们可以继续使用购物车,总计为零

我所取得的一些进步:

如果(!WC()->购物车->为空()
foreach(WC()->cart->get_cart()作为$cart_项目)
//现在我需要检查购物车是否包含一个包

我可以解决将产品添加到购物车时购物车中没有包装的问题,如下所示:

if(WC()->cart->is_empty())
//然后不要将产品添加到购物车,告诉客户先添加包装。
  • 使用
    woocommerce\u add\u to\u cart\u验证
    hook
  • 在代码中添加注释和解释
function filter\u woo commerce\u add\u to\u cart\u validation($passed,$product\u id,$quantity,$variation\u id=null,$variations=null){
//购物车中的产品(ID)
$product\U first\U in\U cart=30;
//比较
if($product\U first\U in\U cart!=$product\U id){
//设置变量
$in_cart=false;
//购物车不是空的
如果(!WC()->购物车->为空(){
//环槽车
foreach(WC()->cart->get_cart()作为$cart_项目){
//搜索特定产品
如果($cart\u item['data']->get\u id()==$product\u first\u in\u cart){
//发现,打破循环
$in_cart=true;
打破
}
}
}
//不在购物车里
如果(!$in_cart){
wc_添加_通知(uuu(‘请在添加其他产品之前添加产品‘A’、‘woocommerce’、‘error’));
$passed=false;
}
}
返回$passed;
}
添加过滤器(“woocommerce\u添加到购物车\u验证”、“filter\u woocommerce\u添加到购物车\u验证”,10,5);

如果我想在购物车=30中的$product\U first\U中添加多个产品id,那么我需要修改if($cart\U item['data']->get\U id()==cart中的$product\U first\U)部分?例如,如果购物车中的$product\U first\U=数组(30,45,45);你可以用它。调整代码取决于,例如,在添加其他产品之前,这些产品中的1种必须出现在购物车中,还是所有产品必须出现在购物车中。如果你想不出来,可以问一个新问题。但是,别忘了在新问题上添加你的尝试,以便它显示出必要的承诺。当做