0

我的问题是我使用的 Divi 没有添加到购物车按钮功能,但您可以通过将这段代码放入 functions.php 来添加一个:

add_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 20 );

现在,我在购物车页面中设置了一个迷你购物车,允许用户购买更多东西以获得免费送货。当他们单击使用上述代码实现的“添加到购物车”按钮时,购物车会刷新以添加它。但是,之前的 woocomerce 通知并没有消失 - 新的通知只会在其下方发布。

示例:
用户在他们的购物车中 - 他们在顶部看到一条通知:
“结账时您将获得 500 积分。”
然后,用户将 minicart 中的一些东西添加到他们的主购物车中。
他们现在没有更新 woocomerce 通知,而是有两个通知:
“结帐时您将获得 500 积分。”
“结帐时您将获得 550 积分。”

现在在有人告诉我用 wc_clear_notices() 做某事之前;

当有人点击更新购物车按钮时,我已经有了这段代码:

add_filter( 'woocommerce_update_cart_action_cart_updated', 'clear_notices_on_cart_update', 10, 1 );

function clear_notices_on_cart_update() { 
        wc_clear_notices(); 
    };

但它仅在单击更新购物车按钮时有效。当用户从购物车页面上显示的微型购物车中单击“添加到购物车”时,我如何默认这一点 - 它会更新通知而不是每次都显示重复?或者每次购物车以任何方式更新时 - 它会删除旧的 woocomerce 通知?

编辑:添加了如何在我的网站上设置通知的示例。例如,这个是移动设备上的锚点通知,当您单击按钮时,会将您带到底部的迷你车。

其他通知的设置方式相同,但功能不同。不管函数中有什么——当点击添加到购物车时,它们都会重复。

add_action( 'woocommerce_before_cart', 'mobile_notice' );
 
function mobile_notice() {
    if ( WC()->cart->get_cart_contents_count() != 0 && wp_is_mobile()) {
        $notice = sprintf('Add *3 of these exclusive products to the cart for $19.99 and get <strong>FREE SHIPPING!</strong><br><a href="#mobiletext" style="" class="button wc-forward">Get Free Shipping</a>');
        wc_print_notice( $notice, 'notice' );
    } 
 
}

这是通知的图像,如果有帮助的话。 通知重复

4

1 回答 1

0

wc_clear_notices();在添加新通知之前尝试添加:

add_action( 'woocommerce_before_cart', 'mobile_notice' );
function mobile_notice() {
    if ( WC()->cart->get_cart_contents_count() != 0 && wp_is_mobile()) {
        wc_clear_notices();
        $notice = sprintf('Add *3 of these exclusive products to the cart for $19.99 and get <strong>FREE SHIPPING!</strong><br><a href="#mobiletext" style="" class="button wc-forward">Get Free Shipping</a>');
        wc_print_notice( $notice, 'notice' );
    }
}
于 2021-03-17T20:24:06.940 回答