编程语言
首页 > 编程语言> > php-如何清除woocommerce错误您不能在购物车中添加另一个“产品名称”

php-如何清除woocommerce错误您不能在购物车中添加另一个“产品名称”

作者:互联网

在我的网站woocommerce设置中,删除添加到卡片ajax并注意;当用户(访客)将产品添加到购物篮中以进行购买时,请在单击到购物篮后重定向并显示消息,将产品添加到购物篮中成功

但是当产品选项处于活动状态(启用)时,我想单独出售该选项.
用户尝试反复将产品添加到购物篮.收到以下消息:
无法将其他“产品名称”添加到您的购物车.
我的问题是如何使用functions.php删除此woocommerce错误您不能在购物车中添加其他“产品名称”.

重复单击后,将新消息显示在购物篮中
您之前将“产品名称”添加到购物车.所以现在您可以付款.

通常:

>删除后无法添加另一条…消息,并在单击后停止重定向到产品页面.
>显示新的自定义消息.单击后转到购物篮.

非常感谢大家

解决方法:

这是一种经过测试的有效解决方案,可以删除“您无法添加其他”消息.

背景:Woocommerce不会直接吸引所有人注意.购物车错误实际上是作为抛出的异常硬编码到class-wc-cart.php中的.

生成错误异常时,它们将被添加到通知列表中,我们可以使用以下方法访问,解析和更改这些通知:

> wc_get_notices()以数组形式返回所有通知
> wc_set_notices()使您可以直接设置notices数组

为了访问通知并对其进行更改,您需要挂钩一个在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

标签:php,function,wordpress,woocommerce,hook-woocommerce
来源: https://codeday.me/bug/20191009/1881449.html