基于复选框值的有条件结帐费用 - WooCommerce
Conditional checkout fee based off of checkbox value- WooCommerce
我在结账流程的账单地址部分有一个自定义用户元字段的复选框。当复选框被选中时,我试图动态地向结账总额添加费用,或者在这种情况下,=='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" 语句,它将收取费用,所以我猜这是根据结帐字段收取费用的错误方式。我怎样才能做到这一点?
我找到了答案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 );
}
}
(放入子主题的 functions.php 文件)
我在结账流程的账单地址部分有一个自定义用户元字段的复选框。当复选框被选中时,我试图动态地向结账总额添加费用,或者在这种情况下,=='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" 语句,它将收取费用,所以我猜这是根据结帐字段收取费用的错误方式。我怎样才能做到这一点?
我找到了答案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 );
}
}
(放入子主题的 functions.php 文件)