我正在运营一个销售两种产品的平台
我需要实现一个功能,如果客户将网络研讨会产品添加到购物车,它应该检查用户是否已登录并且过去已经购买了电子学习产品。 如果是这样,他可能会继续购买网络研讨会作为独立产品。
如果没有,它也应该自动将其添加到购物车(因为必须同时购买两种产品)。
如果客户稍后再次从购物车中手动删除自动添加的产品,则应无法结账,并应显示一条错误消息,表明该特定产品只能与其他产品一起购买。
我已经搜索过插件,但现有的解决方案似乎都不能完全解决此任务,并且仅仅为了一个简单的 if 子句安装一个巨大的插件也可能不是存档它的正确方法。
我的 php 技能非常有限,所以我尝试使用伪代码:
添加到购物车: 如果客户将产品“网络研讨会”广告添加到购物车 检查产品“eLearning”是否也在购物车中或过去购买过 如果没有,请将产品“eLearning”添加到购物车
结账: 如果购物车中只有产品“网络研讨会”,但产品“电子学习”不存在并且过去也没有购买过,则显示自定义错误消息并禁用结帐按钮。
预先感谢您帮助我解决这个问题!
这是我在一些项目中使用的解决方案。在这里我不会阻止结账按钮或其他不是 100% 防弹的解决方案。我只是强制从购物车中删除其他产品以再次添加它。当用户删除捆绑产品时,他可以删除附加产品。
function check_cart_for_bundle_product() {
$bundle_product_id = 33; // Our bundle product
$additional_product = 16; // Our additional product which must be in the cart to complete
$product_cart_id = WC()->cart->generate_cart_id( $bundle_product_id ); // Products in cart have unique ID
$in_cart = WC()->cart->find_product_in_cart( $product_cart_id ); // We search in cart by this unique ID
if($in_cart) {
//If user is not customer we want to add this additional product
if ( ! is_user_logged_in() ) {
WC()->cart->add_to_cart( $additional_product );
} else {
//If current user is customer we want to check if he already purchased the additional product
if ( !wc_customer_bought_product( '', get_current_user_id(), $additional_product ) ) {
WC()->cart->add_to_cart( $additional_product );
}
}
}
}
add_action('woocommerce_before_cart','check_cart_for_bundle_product');
你成功了吗? 我需要一个类似的功能。