当前位置: 首页 > 知识库问答 >
问题:

添加到购物车并重定向到WooCommerce中默认可变产品的签出

许琛
2023-03-14

我正在尝试LoicTheAztec的以下代码-添加到购物车并重定向到WooCommerce中的可变产品的签出

现在的问题是,每当我用产品编辑器中设置的默认变体单击Buy Now按钮时,代码都不起作用。

在这种情况下,立即购买URL变为.../?#0

我使用的主题是巴塞尔

有什么解决办法吗?

LoicTheAztec尝试了代码。

function add_custom_addtocart_and_checkout() {
    global $product;

    $addtocart_url = wc_get_checkout_url().'?add-to-cart='.$product->get_id();
    $button_class  = 'single_add_to_cart_button button alt custom-checkout-btn';
    $button_text   = __("Buy & Checkout", "woocommerce");

    if( $product->is_type( 'simple' )) :
    ?>
    <script>
    jQuery(function($) {
        var url    = '<?php echo $addtocart_url; ?>',
            qty    = 'input.qty',
            button = 'a.custom-checkout-btn';

        // On input/change quantity event
        $(qty).on('input change', function() {
            $(button).attr('href', url + '&quantity=' + $(this).val() );
        });
    });
    </script>
    <?php

    elseif( $product->is_type( 'variable' ) ) : 

    $addtocart_url = wc_get_checkout_url().'?add-to-cart=';
    ?>
    <script>
    jQuery(function($) {
        var url    = '<?php echo $addtocart_url; ?>',
            vid    = 'input[name="variation_id"]',
            pid    = 'input[name="product_id"]',
            qty    = 'input.qty',
            button = 'a.custom-checkout-btn';

        // Once DOM is loaded
        setTimeout( function(){
            if( $(vid).val() != '' ){
                $(button).attr('href', url + $(vid).val() + '&quantity=' + $(qty).val() );
            }
        }, 300 );

        // On input/change quantity event
        $(qty).on('input change', function() {
            if( $(vid).val() != '' ){
                $(button).attr('href', url + $(vid).val() + '&quantity=' + $(this).val() );
            }
        });

        // On select attribute field change event
        $('.variations_form').on('change blur', 'table.variations select', function() {
            if( $(vid).val() != '' ){
                $(button).attr('href', url + $(vid).val() + '&quantity=' + $(qty).val() );
            }
        });
    });
    </script>
    <?php
    endif;
    echo '<a href="'.$addtocart_url.'" class="'.$button_class.'">'.$button_text.'</a>';
} ```

I expect this code to work when the user does not change or update any variations on the product page. That is when the user clicks on the Buy Now button with the default variations.

共有1个答案

慕鸿波
2023-03-14

您不需要在变体表单中添加所有按钮,它将与提交表单的“添加到购物车”按钮一样工作,然后进行重定向

这是经过测试的和我一起工作

 add_action( 'woocommerce_single_variation', 'second_button_single_variation', 30 );
   function second_button_single_variation() {
    global $product;

echo '<form method="post">
    <button type="submit" name="checkout_now" id="checkout_now" class="single_add_to_cart_button button alt buy_now_button" value="'.$product->get_id().'">Buy Now</button></form>';
  }

  function woo_redirect_to_checkout() {
global $woocommerce;
  if( isset($_POST['checkout_now']) ){
 wc_clear_notices();
    $checkout_url = $woocommerce->cart->get_checkout_url();
 wp_redirect($checkout_url);
  }
 }
    add_filter ('add_to_cart_redirect', 'woo_redirect_to_checkout');

 // clearing the cart if you want to go to checkout with the desired product only
  add_filter( 'woocommerce_add_to_cart_validation', 'remove_cart_item_before_add_to_cart', 20, 3 );
  function remove_cart_item_before_add_to_cart( $passed, $product_id, $quantity ) {
if( isset($_POST['checkout_now']) ){
 if( ! WC()->cart->is_empty() )
    WC()->cart->empty_cart();
}
return $passed;
  }
 类似资料:
  • 以前,在将产品从存档页面添加到购物车后,页面会停留在相同的页面上(而不是重定向),但这只对一个简单的产品起作用。我要做的是为可变产品也启用这个特性(在存档页面显示产品选项,而不必先到产品页面)。 [WooCommerce 3.0+]Ajax添加到可变产品存档页面上的购物车 使用此代码: 我已经做到了一半,但现在最大的问题是,在将可变产品和/或简单产品添加到cart之后,我会被重定向到product

  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 目标:在一个按钮点击中添加多个可变产品到购物车。 我试着将这段代码放入循环中,但它不起作用。 但是这种方法不能解决问题,因为我需要在一个按钮点击中添加几个产品变体。 所有的建议都将不胜感激。多谢了。

  • 在Woocommerce中,我需要在添加产品时跳过购物车页面,并直接重定向到仅限订阅产品类型的签出。 我在其他地方找到了下面的代码,它适用于跳过基于产品ID的购物车页面,但是我不能正确地使用产品类型(请参阅下面我尝试的内容)。 我尝试的:(它破坏了整个网站:变成了一个blanc页面) 有没有办法做到这一点?

  • 我使用WooCommerce Wordpress中的以下代码,通过一个模板,使用add_to_cart($product_id)功能添加了许多产品。 现在,我希望通过此模板为每个产品添加自定义价格。现在购物车中的价格和数据库中的价格一样,但我想通过这一点添加我的自定义价格。有人能帮我做同样的事吗。谢谢