【问题标题】:Stop the redirection after WooCommerce add to cartWooCommerce 添加到购物车后停止重定向
【发布时间】:2017-07-21 23:52:33
【问题描述】:

我希望在用户单击“添加到购物车”按钮后完全删除任何重定向。

实际上我没有使用产品页面。
我正在使用带有产品链接的简单按钮,如下所示:?add-to-cart=492

我的用户将点击我页面上的几个“添加到购物车”按钮,因此在点击第一个按钮后他无法被重定向到任何页面。

在页面的最后,他会找到一个结帐按钮来付款,就是这样。

任何想法如何实现这一目标?

谢谢

【问题讨论】:

    标签: php wordpress woocommerce checkout product


    【解决方案1】:

    更新:

    您的简单 html“添加到购物车”按钮链接实际上就是这样 href 值)

    <a href="http://my-domain.com/site2/?add-to-cart=492" target="_self" class="button white is-larger carrinho">
        <span>ESCOLHER PACOTE</span>
    </a>
    

    所以他们每次都会被重定向到你的主页


    2 个解决方案:

    1) 这样使用WooCommerce short code [add-to-cart]:**

    • 不含价格:[add_to_cart id="492" show_price="false"]
    • 附价格:[add_to_cart id="492"]

    2) 页面文本编辑器中的 Html 代码 - 为防止重定向, href 属性 应为:

    <a href="?add-to-cart=492" class="button white is-larger carrinho">
        <span>ESCOLHER PACOTE</span>
    </a>
    

    这一次您的客户将不会像以前那样被重定向


    结帐按钮

    要完成,这是一个自定义短代码,它将输出“继续结帐”按钮:

    if( !function_exists('proceed_to_checkout_button') ) {
        function proceed_to_checkout_button() {
    
            $checkout_url = wc_get_checkout_url();
            $button_txt = __('Proceed to checkout', 'woocommerce');
    
            $output = '<div class="wc-proceed-to-checkout">
                <a href="'. $checkout_url .'" class="checkout-button button alt wc-forward">
                    '. $button_txt .'
                </a>
            </div>';
    
            return $output;
        }
        add_shortcode( 'checkout_button', 'proceed_to_checkout_button' );
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    用法:只需将其添加到您的页面编辑器中即可:[checkout_button]


    原答案:

    首先,在 WooCommerce 设置中,您需要:

    • 在添加到购物车按钮上启用 **Ajax(Woocommerce > 设置 > 产品 > 显示)
    • 禁用添加到购物车按钮重定向(Woocommerce > 设置 > 产品 > 显示)

    然后您可以使用以下方法添加自定义“继续结帐”按钮:

    • 任何经典的 WordPress 菜单(外观 > 菜单)
    • 在单个产品页面和产品档案中使用该自定义代码:
    add_action('woocommerce_after_single_product', 'custom_checkout_button', 100);
    add_action('woocommerce_after_shop_loop', 'custom_checkout_button', 100);
    function custom_checkout_button() {
    
        $checkout_url = wc_get_checkout_url();
        $button_txt = __('Proceed to checkout', 'woocommerce');
    
        ?>
            <div class="wc-proceed-to-checkout">
                <a href="<?php echo $checkout_url; ?>" class="checkout-button button alt wc-forward">
                    <?php echo $button_txt ?>
                </a>
            </div>
        <?php
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    “继续结帐”按钮将显示在此页面的底部。


    如果您想跳过购物车页面:

    add_action('template_redirect', 'skip_cart_page_redirecting_to_checkout');
    function skip_cart_page_redirecting_to_checkout() {
    
        // If is cart page and cart is not empty
        if( is_cart() && ! WC()->cart->is_empty() )
            wp_redirect( wc_get_checkout_url() );
    }
    

    代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

    所有代码都经过测试并且可以工作。

    【讨论】:

    • 谢谢,但是按下添加到购物车按钮后的重定向直到发生。我在常规页面中使用了一个简单的按钮,链接 = vendamais.me/site2/?add-to-cart=492。我不知道这是否会改变解决方案的逻辑......
    • 使用该简码单击“添加到购物车”按钮后,“查看购物车”文本链接将替换该按钮。有没有办法更改该文本甚至删除链接?请参阅:take.ms/NzPhF 我设法设计了它的样式,但不能做更多。再次感谢
    • @rfmarchetti 所以在这种情况下最好使用 html 按钮...您甚至可以轻松制作自己的短代码...
    • 谢谢!我按照您的说明创建了这样的链接:
    • 感谢@LoicTheAztec。在您的帮助下,我取得了不错的成绩!
    【解决方案2】:

    就像 woocommerce 本身在产品代码短代码中所做的那样,您可以只使用简单添加到购物车按钮“woocommerce_add_to_cart_form_action”的过滤器。

    // Change form action to avoid redirect.
    add_filter( 'woocommerce_add_to_cart_form_action', '__return_empty_string' );
    

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 1970-01-01
      • 2014-06-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-03-13
      • 2020-11-19
      • 2018-05-08
      相关资源
      最近更新 更多