在我的网站woocommerce设置中,删除添加到卡片ajax并发出通知;并且当用户(访客)将产品添加到购物篮中以进行购买时,请单击后重定向到购物篮并显示消息,将产品添加到购物篮中的商品成功
但是当产品选项处于活动状态(启用)时,我想单独出售该选项。 用户尝试反复将产品添加到购物篮。收到以下消息: 无法将其他“产品名称”添加到您的购物车。 我的问题是如何使用functions.php删除此woocommerce错误您不能在购物车中添加其他“产品名称”。
,重复单击后,将新消息显示在购物篮中 您之前将“产品名称”添加到购物车。所以现在您可以付款。
通常:
删除无法添加另一条...消息,并在单击后停止重定向到产品页面。
显示新的自定义消息。单击并转到购物篮后。
非常感谢大家
答案 0 :(得分:1)
这是一种经过测试的有效解决方案,可以删除“您无法添加其他”消息。
背景:Woocommerce不会直接挂钩所有通知。实际上,购物车错误会作为抛出的异常硬编码到class-wc-cart.php中。
生成错误异常时,会将它们添加到我们可以使用以下方法访问,解析和更改的通知列表中:
为了访问通知并对其进行更改,您需要挂钩一个在woocommerce生成其通知之后将触发的操作,但是在显示该页面之前。您可以执行以下操作: woocommerce_before_template_part
这里是完整的工作代码,专门删除了“ 您不能添加其他”通知:
add_action('woocommerce_before_template_part', 'houx_filter_wc_notices');
function houx_filter_wc_notices(){
$noticeCollections = wc_get_notices();
/*DEBUGGING: Uncomment the following line to see a dump of all notices that woocommerce has generated for this page */
/*var_dump($noticeCollections);*/
/* noticeCollections is an array indexed by notice types. Possible types are: error, success, notice */
/* Each element contains a subarray of notices for the given type */
foreach($noticeCollections as $noticetype => $notices)
{
if($noticetype == 'error')
{
/* the following line removes all errors that contain 'You cannot add another'*/
/* if you want to filter additiona errors, just copy the line and change the text */
$filteredErrorNotices = array_filter($notices, function ($var) { return (stripos($var, 'You cannot add another') === false); });
$noticeCollections['error'] = $filteredErrorNotices;
}
}
/*DEBUGGING: Uncomment to see the filtered notices collection */
/*echo "<p>Filtered Notices:</p>";
var_dump($noticeCollections);*/
/*This line overrides woocommerce notices by changing them to our filtered set. */
wc_set_notices($noticeCollections);
}
旁注:如果要添加自己的通知,则可以使用wc_add_notice()。您必须阅读woocommerce文档以了解其工作原理: wc_add_notice on WooCommerce docs