Wordpress 在WooCommerce中,仅允许同一供应商的购物车中的产品

Wordpress 在WooCommerce中,仅允许同一供应商的购物车中的产品,wordpress,validation,woocommerce,product,vendor,Wordpress,Validation,Woocommerce,Product,Vendor,我在Woocmmerce商店中我的子主题的functions.php文件中编写了一个函数 添加到购物车按钮上的验证检查购物车中的所有产品是否仅来自一个供应商 如果产品来自一个供应商,它将添加该产品 如果产品来自不同的供应商,则通知应显示警告 此功能无法正常工作,因为通知仅在我手动刷新页面时显示。它应该立即显示通知。有人能帮我吗 下面是我的代码: add_action('wp_排队_脚本','martfury_child_排队_脚本',20); 函数martfury_child_enqueue

我在Woocmmerce商店中我的子主题的
functions.php
文件中编写了一个函数

添加到购物车
按钮上的验证检查购物车中的所有产品是否仅来自一个供应商

  • 如果产品来自一个供应商,它将添加该产品
  • 如果产品来自不同的供应商,则通知应显示警告
此功能无法正常工作,因为通知仅在我手动刷新页面时显示。它应该立即显示通知。有人能帮我吗

下面是我的代码:

add_action('wp_排队_脚本','martfury_child_排队_脚本',20);
函数martfury_child_enqueue_scripts(){
wp_enqueue_样式('martfury child style',get_stylesheet_uri());
if(is_rtl()){
wp_enqueue_样式('martfury rtl',get_template_directory_uri()。/rtl.css',array(),'20180105');
}
}
添加操作('woocommerce\u add\u to\u cart\u validation',函数($is\u allow,$product\u id,$quantity){
$product=get\U post($product\U id);
$product\u author=$product->post\u author;
//遍历每个购物车项目
foreach(WC()->cart->get_cart()作为$cart\u item\u key=>$cart\u item){
$cart_product_id=$cart_item['product_id'];
$cart\u product=get\u post($cart\u product\u id);
$cart\u product\u author=$cart\u product->post\u author;
if($cart\u product\u author!=$product\u author){
$is_allow=false;
打破
}
}
如果(!$是允许的){
//我们将显示一条错误消息
wc_add_notice(uuu(“好吧,您的购物车中已经有一些商品了。先用这些商品结账,然后再购买其他商品!”,“wcfm ecogear”),“error”);
返回wp_重定向($woocommerce->cart->get_cart_url());
}
返回$是允许的;
}, 50, 3 );

似乎您应用的某些步骤是不必要的,这应该足够了

  • -检索给定post ID或post对象的post数据
  • 通过代码中添加的注释标记进行解释
function filter\u woodcommerce\u add\u to\u cart\u validation($passed,$product\u id,$quantity,$variation\u id=null,$variations=null){
//购物车不是空的
如果(!WC()->购物车->为空(){
//检索给定post ID或post对象的post数据。
$product=get\U post($product\U id);
//后作者
$product\u author=$product->post\u author;
//标志,默认为false
$flag=false;
//环槽车
foreach(WC()->cart->get_cart()作为$cart_项目){
//获取产品ID
$cart_product_id=$cart_item['data']->get_id();
//发帖
$cart\u product=get\u post($cart\u product\u id);
//后作者
$cart\u product\u author=$cart\u product->post\u author;
//条件不相等
if($cart\u product\u author!=$product\u author){
$flag=true;
//断环
打破
}
}
//真的
如果($flag){
//添加通知
wc_添加_通知(uuu(‘购物车中的产品必须来自一个供应商’、‘woocommerce’、‘error’);
//未通过
$passed=false;
}
}
返回$passed;
}
添加过滤器(“woocommerce\u添加到购物车\u验证”、“filter\u woocommerce\u添加到购物车\u验证”,10,5);