Woocommerce添加到购物车按钮重定向到结帐

时间:2013-03-23 22:06:44

标签: php wordpress wordpress-plugin woocommerce

我使用插件woocommerce创建了一个电子商务。我只销售订阅,所以“/ cart /”页面没用。我正试图摆脱它,以便当我的客户点击“添加到购物车”按钮时,他最终会在结帐页面上。

8 个答案:

答案 0 :(得分:62)

你可以在functions.php中使用过滤器:

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
}

它似乎不适用于ajax,但它适用于单个产品页面,我认为这是您使用的

在最新版本的WooCommerce(> = 2.1)上,该功能可以简化为:

function redirect_to_checkout() {
    return WC()->cart->get_checkout_url();
}

答案 1 :(得分:11)

WooCommerce设置中有一个选项可让您启用此功能:

Option to redirect visitor to cart page

只需登录您的WP管理面板> WooCommerce>目录并选择选项。我希望这有帮助!

答案 2 :(得分:10)

我找到了一个像魔术一样的简单解决方案。

  1. 如@Ewout所述,请选中“成功添加后将Redirecto添加到购物车页面”框。
  2. Woocommerce>设置> Checkout(Tab) - 您应该在哪里选择购物车和结帐页面,选择结帐页面作为购物车页面(附图片)。
  3. 就是这样。适合我。 enter image description here

答案 3 :(得分:3)

@RemiCorson发布了这个简短但有益的教程:

http://www.remicorson.com/woocommerce-skip-product-cart-pages/

他提到与上面的@Ewout相同的过滤器,

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');

function redirect_to_checkout() {
    global $woocommerce;
    $checkout_url = $woocommerce->cart->get_checkout_url();
    return $checkout_url;
     

}

但一行代码突出,对我目前的woocommerce项目来说具有超值价值:

用户可以使用直接链接自动绕过产品页面。 http://your-site.com/?add-to-cart=37

'37'将替换为您的产品ID。

这对我来说非常有用,可以消除不必要的步骤并让用户直接从主页和其他非woocommerce页面/帖子结帐。

答案 4 :(得分:1)

在WooCommerce 2.6中不推荐使用过滤器 add_to_cart_redirect 。请改用 woocommerce_add_to_cart_redirect

将此添加到你的functions.php:

add_filter ('woocommerce_add_to_cart_redirect', function() {
  return WC()->cart->get_checkout_url();
} );

答案 5 :(得分:0)

在商店页面上,如果你想使用ajax并重定向到另一个。第二种方法只有在有某些条件时,你可以使用这个过滤器并离开Woocommerce设置ajax启用:

add_filter('woocommerce_loop_add_to_cart_link', array( $this, 'add_quantity_input' ), 4, 2); 

删除类属性ajax_add_to_cart并将href值更改为checkout url page;

在我的模板案例中:

public function add_quantity_input($text = null, $product = null) {
    global $product, $woocommerce;

    if ( $text != null and $product != null  ) {
        if(ismycondition($product->id)) {
            $s = explode('class="', $text);
            $s[2]=str_replace('ajax_add_to_cart', '', $s[2]);
            $text = implode('class="', $s);

            $text = preg_replace('/<a(.*)href="([^"]*)"(.*)>/','<a$1href="'.$woocommerce->cart->get_checkout_url().'"$3>', $text);
        }
    }

    return $text;
}

我希望这有帮助。

答案 6 :(得分:0)

没有一个解决方案实际上对我有用,过滤器add_to_cart_redirect在每个页面上都触发,而不仅仅是在购物车上。我对建议的答案进行了一些修改。

add_filter ('add_to_cart_redirect', 'redirect_to_checkout');
  function redirect_to_checkout() {
  if(is_cart()){
    $checkout_url = WC()->cart->get_checkout_url();
  ?>
  <script>
  location = '<?=$checkout_url?>';
  </script>
  <?php 
  }
}

答案 7 :(得分:0)

WooCommerce 3.5.1的更新

步骤1。 首先转到WooCommerce产品设置,然后停用AJAX添加到购物车。

第2步。 使用woocommerce_add_to_cart_redirect钩子重定向到结帐。

add_filter( 'woocommerce_add_to_cart_redirect', function( $url ) {
    return wc_get_checkout_url();
});

当然,还有一些小事情要做,例如更改添加到购物车按钮文本和删除一些与WooCommerce购物车有关的通知。我建议查看本教程以了解更多https://rudrastyh.com/woocommerce/redirect-to-checkout-skip-cart.html