如何在使用ajax添加优惠券时禁止购物车页面显示优惠券通知?

时间:2015-11-25 10:11:45

标签: ajax wordpress woocommerce coupon

我正在以编程方式在woocommerce中添加优惠券,并且通过另一个页面的ajax而不是结帐页面工作得非常好。但是,每次我进入结帐页面时,都会说“已申请优惠券”,但我已经从其他页面申请了优惠券。在我执行动态应用优惠券的ajax之后,如何在进入结帐页面时禁止显示此消息?当已经从ajax功能应用优惠券时,是否有某种设置或功能可以调用以禁用此消息显示在购物车页面上?

这是我的php,通过ajax从单独的页面(而不是结帐页面)申请优惠券:

if (!WC()->cart->add_discount( sanitize_text_field( $coupon_code )))
{
    $notices = wc_get_notices();
    if (!empty($notices) && isset($notices['error'])) {
        $last_fail = end($notices['error']);
        echo $last_fail;
    }
    die();
}
else
{
    $notices = wc_get_notices();

    // Get last element of array only!
    if (!empty($notices) && isset($notices['success'])) {
        $last_success = end($notices['success']);
        echo $last_success;
    }
    die();
}

这很好用。正如您所看到的,我抓住错误并将它们返回到ajax调用的response内,并以这种方式输出错误。我也输出了一些成功的东西,这很好。我遇到的问题是,在通过ajax执行此功能后,我浏览到结帐页面以查看我应用的产品和优惠券代码,它会在页面顶部显示“优惠券已成功应用”。我不希望这个通知出现,但我不想删除所有通知,只是这一个,如果优惠券没有应用在结帐页面上,浏览时不需要出现这个wc_notice到结帐页面。

如果在从其他页面(通过ajax)手动添加优惠券后浏览结帐页面时,如何告诉woocommerce不要将此优惠券通知应用于结帐页面?

3 个答案:

答案 0 :(得分:1)

您可以使用“woocommerce_coupon_message”过滤器隐藏优惠券的成功消息。如果您只想将其删除,只需检查当前页面是否为结帐页面。

您可以使用以下代码:

{{{:1}}}

注意:如果您还想更改错误消息,请使用“woocommerce_coupon_error”过滤器。

答案 1 :(得分:0)

解决此问题的方法是在函数调用中在wc_clear_notices();之前添加die();,以便删除函数add_discount添加到从{返回的数组'的所有注意事项。 {1}}函数调用。

wc_get_notices()

答案 2 :(得分:-1)

这种方式可能有点懒惰。但是如果你检查页面的元素,找到消息,定位它并添加' display:none;'在CSS。

这应该可以解决问题。尝试使其仅适用于该页面。一个唯一的类通常是在inspect元素

页面顶部找到的page-id