我在结帐流程的结算地址部分有一个自定义用户元字段的复选框。我在选中复选框时尝试动态为结帐总额添加费用,或者在这种情况下,==' 1'。
我的尝试:
add_action( 'woocommerce_cart_calculate_fees','ups_yes_no_fee', 43, 1 );
function ups_yes_no_fee( $wc_cart ) {
global $woocommerce;
if($_POST['billing_ups_yn'] == '1'){
//echo 'checked';
$woocommerce->cart->add_fee( __('Own Account Shipping', 'woocommerce'), 20 );
}
}
如果我删除" if"它将适用该费用。声明,所以我猜测这是根据结账领域申请费用的错误方式。我怎么能做到这一点?
答案 0 :(得分:0)
我找到了答案here。
以下是我的问题的解决方案:
add_action( 'wp_footer', 'woocommerce_add_ups_y_n', 357 );
function woocommerce_add_ups_y_n() {
if (is_checkout()) {
?>
<script type="text/javascript">
jQuery( document ).ready(function( $ ) {
jQuery('#billing_ups_yn').click(function(){
jQuery('body').trigger('update_checkout');
});
});
</script>
<?php
}
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_ups_y_n_fee', 43, 1);
function woo_add_cart_ups_y_n_fee( $cart ){
if ( ! $_POST || ( is_admin() && ! is_ajax() ) ) {
return;
}
if ( isset( $_POST['post_data'] ) ) {
parse_str( $_POST['post_data'], $post_data );
} else {
$post_data = $_POST;
}
if (isset($post_data['billing_ups_yn'])) {
$extracost = 25;
WC()->cart->add_fee( 'Own UPS Account', $extracost );
}
}
(放入儿童主题&#39; functions.php文件)