我正在以编程方式在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不要将此优惠券通知应用于结帐页面?
答案 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