WooCommerce 添加到购物车后停止重定向

问题描述 投票:0回答:3

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

实际上我没有使用产品页面。
我使用一个带有产品链接的简单按钮,如下所示:

?add-to-cart=492

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

在页面末尾,他会找到一个“结账”按钮来付款,就是这样。

有什么想法可以实现这一目标吗?

谢谢

php wordpress woocommerce checkout product
3个回答
3
投票

更新:

您简单的 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 短代码 [添加到购物车] 这样:**

  • 不含价格:
    [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 文件中,或者也位于任何插件文件中。

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


3
投票

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

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

0
投票

我也有类似的问题。 在我的产品页面上,单击添加到购物车按钮将用户重定向到结账页面。 这种情况不应该发生,我们想要的只是显示另一个“转到购物车”按钮,或者不显示任何内容,因为购物车图标显示添加的产品。

预先感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.