WooCommerce Dynamic Surchage基于结帐时的单选按钮

时间:2015-06-20 01:31:20

标签: php ajax radio-button woocommerce

如果选择一个,则如何让一个单选按钮组更新WooCommerce Checkout页面上结帐总额中列出的数据,然后另一个。单选按钮A的选择需要增加0.05%作为附加费,而单选按钮B将增加0.10%。

我知道我可以使用以下内容添加静电附加费:

add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;

if ( is_admin() && ! defined( 'DOING_AJAX' ) )
    return;

// $percentage is what will change based on which button is selected A or B
// however this is not executed after the page is loaded
$percentage = 0.05;

$surcharge = ( $woocommerce->cart->cart_contents_total + $woocommerce->cart->shipping_total ) * $percentage;    
$woocommerce->cart->add_fee( 'Service Fee', $surcharge, true, 'standard' );

}

2 个答案:

答案 0 :(得分:0)

也许这样的事情会让你开始。我认为它不会自动添加费用,但我没有对其进行测试,这只是一个想法:

jQuery(document).ready(function($){

    if ( typeof wc_checkout_form === 'undefined' || ) {
        return false;
    }

    $checkout_form = $( 'form.checkout' );
    $checkout_form.on( 'change', '.your_radio_buttons_class', function(){
        wc_checkout_form.wc_checkout_form();
    });

});

我相信您需要使用checkout script,因此您需要确保在checkout.js之后加载自定义脚本。

答案 1 :(得分:0)

所以我通过使用AJAX,处理按钮更改并调用设置WC-> session-> set变量的PHP回调来解决这个问题。然后在AJAX中发出一个location.reload,强制functions.php重新加载。在我的附加费过滤器中,我检查了会话变量,并根据会话值添加了费用。