【问题标题】:How do I redirect to the cart page if I click on the 'Add to cart' button for a product that's already in cart如果我为已在购物车中的产品单击“添加到购物车”按钮,如何重定向到购物车页面
【发布时间】:2020-10-17 14:28:01
【问题描述】:

如果我为已在购物车中的产品单击“添加到购物车”按钮,如何重定向到购物车页面?

Woocommerce/wordpress:

这是我目前的代码。目前它没有重定向到购物车页面。

    add_filter( 'woocommerce_add_to_cart_redirect', 'woo_in_cart' );
function woo_in_cart($product_id) {
    global $woocommerce;         
    $url = WC()->cart->get_cart_url();
    foreach($woocommerce->cart->get_cart() as $key => $val ) {
        $_product = $val['data'];

        if($product_id == $_product->id ) {
            wp_redirect($url);
        }
    }         
}

【问题讨论】:

  • 您应该使用“woocommerce_add_to_cart_validation”并将其标记为无效,然后使用“woocommerce_cart_redirect_after_error”过滤器设置所需的重定向页面。问我要不要一些代码
  • @Shalior 谢谢你的建议。是的,如果您不介意提供一些代码供我使用和测试,将不胜感激
  • 另请阅读:Changing the redirect of the “add to cart” button in woocommerce store in Shop page 使用woocommerce_add_to_cart_redirect

标签: php wordpress woocommerce


【解决方案1】:

这个 sn-p 可以满足您的要求,并且它支持 ajax 调用。 关于您的代码的一些要点:

1- 'woocommerce_add_to_cart_redirect' 在产品已添加到购物车时触发。

2- WC()->cart->get_cart_url() 已弃用

3- 如果启用了 ajax 添加到购物车,则不会重定向

add_filter('woocommerce_add_to_cart_validation' , 'shalior_flag_already_added_products_as_invalid' , 10 , 2);
function shalior_flag_already_added_products_as_invalid ($result , $product_id){
    if (false === $result){
        return $result;
    }

    $url = wc_get_cart_url();
    foreach ( WC()->cart->get_cart() as $cart_item ) {
        $cart_item_product_id = $cart_item['product_id'];
        if($product_id === $cart_item['product_id'] ) {
            $result = false;
        }
    }
    if (false === $result){
        add_filter('woocommerce_cart_redirect_after_error' , function (){
            return wc_get_cart_url();
        } , 999 );
    }
    return $result;
}

【讨论】:

    猜你喜欢
    • 2014-08-30
    • 1970-01-01
    • 2021-06-28
    • 2018-09-30
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多