我在我的WooCommerce购物车中添加了2个单选按钮。但是我想在选择一个而不是另一个时添加附加费,我希望它更新显示的结账数据。
我知道我可以这样做以便一直添加附加费:
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
function woocommerce_custom_surcharge() {
global $woocommerce;
$surcharge = 5.32;
$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );
}
但是如何根据我选择的单选按钮控制它添加或不添加?
答案 0 :(得分:1)
最好的方法是使用ajax(未经测试的代码):
<input type="radio" name"surcharge" value="5.32" class="surcharge" />
<script>
$(document).ready(function () {
$(".surcharge").click(function(){
$.ajax({
url: "where_is_your.php", // Name of PHP script
type: "POST",
data: {
action: $(this).val(), //here you get the value 5.32
}
}).done(function(data) {
alert( data.message ); //your success message if you want it
});
})
})
</script>
和你的php:
add_action( 'woocommerce_cart_calculate_fees','woocommerce_custom_surcharge' );
$surcharge = $_POST['action'];
function woocommerce_custom_surcharge() {
global $woocommerce;
$woocommerce->cart->add_fee( 'Surcharge', $surcharge, true, '' );
}
答案 1 :(得分:0)
<?php
/**
* WooCommerce Extra Feature
* --------------------------
*
* Add custom fee to cart automatically
*
*/
function woo_add_cart_fee() {
global $woocommerce;
$woocommerce->cart->add_fee( __('Custom', 'woocommerce'), 5 );
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' ); ?>
您可以使用&#34; woocommerce_cart_calculate_fees&#34;为你的主题添加金额附加金额,加上上面的AJAX将帮助你。
答案 2 :(得分:0)
我通过创建一个AJAX来处理按钮然后在PHP回调中发出WC-&gt; session-&gt;设置来设置会话变量来解决这个问题。返回后,我发出一个location.reload(),刷新页面但不清除缓存。这样当再次加载functions.php时,我在附加功能中添加了一个action_add,我可以查询会话变量以查看点击了哪个单选按钮并添加了相应的cart-&gt; add_fee。