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

Php 添加到购物车并重定向到WooCommerce中可变产品的签出,php,jquery,wordpress,woocommerce,product-quantity,Php,Jquery,Wordpress,Woocommerce,Product Quantity,我得到了帮助,允许添加一个额外的添加到购物车按钮,重定向到结帐。它适用于简单的产品 但是如何使它也适用于可变产品呢 我一直在尝试自己,但无论我做什么,我打破了网站。我只是不明白如何使这项工作与/用于可变产品 以下是适用于简单产品的稍加修改的代码,其中考虑了数量字段: add_action( 'woocommerce_after_add_to_cart_button', 'add_custom_addtocart_and_checkout' ); function add_custom_addto

我得到了帮助,允许添加一个额外的添加到购物车按钮,重定向到结帐。它适用于简单的产品

但是如何使它也适用于可变产品呢

我一直在尝试自己,但无论我做什么,我打破了网站。我只是不明白如何使这项工作与/用于可变产品

以下是适用于简单产品的稍加修改的代码,其中考虑了数量字段:

add_action( 'woocommerce_after_add_to_cart_button', 'add_custom_addtocart_and_checkout' );
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
    echo '<a href="'.$addtocart_url.'" class="'.$button_class.'">'.$button_text.'</a>';
    endif;
}
add_操作('woocommerce_后加_至_购物车按钮','add_自定义_添加至购物车和_结帐');
函数add_custom_addtocart_和checkout(){
全球$产品;
$addtocart\u url=wc\u get\u checkout\u url()。?添加到购物车='。$product->get\u id();
$button_class='single_add_to_cart_button alt custom checkout btn';
$button_text=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
如果($product->是_类型('simple')):
?>
jQuery(函数($){
var url=“”,
数量='输入数量',
按钮='a.custom-checkout-btn';
//关于输入/更改数量事件
$(数量).on('input change',function()){
$(按钮).attr('href',url+'和quantity='+$(this.val());
});
});

更新3

下面的代码将处理简单和可变的产品,添加一个额外的addtocart按钮,该按钮重定向到cart(同步数量)

该代码也适用于简单和可变的产品

add_action( 'woocommerce_after_add_to_cart_button', 'add_custom_addtocart_and_checkout' );
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 &amp; 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>';
}
add_操作('woocommerce_后加_至_购物车按钮','add_自定义_添加至购物车和_结帐');
函数add_custom_addtocart_和checkout(){
全球$产品;
$addtocart\u url=wc\u get\u checkout\u url()。?添加到购物车='。$product->get\u id();
$button_class='single_add_to_cart_button alt custom checkout btn';
$button_text=uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;
如果($product->是_类型('simple')):
?>
jQuery(函数($){
var url=“”,
数量='输入数量',
按钮='a.custom-checkout-btn';
//关于输入/更改数量事件
$(数量).on('input change',function()){
$(按钮).attr('href',url+'和quantity='+$(this.val());
});
});
jQuery(函数($){
var url=“”,
vid='input[name=“variation_id”],
pid='input[name=“product_id”]',
数量='输入数量',
按钮='a.custom-checkout-btn';
//加载DOM后
setTimeout(函数(){
如果($(vid).val()!=''){
$(按钮).attr('href',url+$(vid.val()+')和quantity='+$(qty.val());
}
}, 300 );
//关于输入/更改数量事件
$(数量).on('input change',function()){
如果($(vid).val()!=''){
$(按钮).attr('href',url+$(vid.val()+')和quantity='+$(this.val());
}
});
//关于选择属性字段更改事件
$('.variations_form')。在('change blur','table.variations select',function()上{
如果($(vid).val()!=''){
$(按钮).attr('href',url+$(vid.val()+')和quantity='+$(qty.val());
}
});
});

Hi LoicTheAztec,如果数量为1,则它不适用于简单产品。对于变量,它很好。仍然不起作用。示例:添加一个产品(数量1)。正常工作。从收银台返回到商店,转到其他产品。选择3个数量并单击。您将被重新定向到收银台,但没有添加到购物车中。将一些产品正常添加到购物车中,然后通过选择1个以上的数量添加另一个产品:不工作。该产品未添加到购物车中。否-抱歉。简单工作,可变产品有错误。after添加到购物车(在购买和结帐按钮之前)将显示:$addtocart_url=wc_get_Checkout_url()。?添加到购物车=';