【发布时间】:2015-11-14 03:26:18
【问题描述】:
我正在尝试在结帐时将自定义费用添加到订单总额中。 我在 woocommerce 中添加了一个复选框
add_action( 'woocommerce_after_checkout_billing_form', 'add_box_option_to_checkout' );
function add_box_option_to_checkout( $checkout ) {
echo '<div id="message_fields">';
woocommerce_form_field( 'add_gift_box', array(
'type' => 'checkbox',
'class' => array('add_gift_box form-row-wide'),
'label' => __('Ilość pudełek ozdobnych - 25 PLN/szt'),
'placeholder' => __(''),
), $checkout->get_value( 'add_gift_box' ));
}
包含一个应该处理事件的自定义 js 文件
jQuery( document ).ready(function( $ ) {
$('#add_gift_box').click(function(){
var data = {
action: 'woocommerce_add_gift_box',
state: '200',
};
jQuery.ajax({
type: 'POST',
url: wc_checkout_params.ajax_url,
data: data,
success: function (code) {
console.log(code);
jQuery('body').trigger('update_checkout');
},
dataType: 'html'
});
});
});
还有一个php手续费处理函数
function woo_add_cart_fee( $data ){
if ( is_admin() && ! defined( 'DOING_AJAX' ) || ! $_POST ) return;
$extracost = 0;
if (isset($_POST['state'])) {
$extracost = intval($_POST['state']);
}
WC()->cart->add_fee( 'Ozdobne pudełka:', $extracost );
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );
add_action('wp_ajax_woocommerce_add_gift_box', 'woo_add_cart_fee', 10);
add_action('wp_ajax_nopriv_woocommerce_add_gift_box', 'woo_add_cart_fee', 10);
由于某些原因,$_POST['state'] 的值没有被添加,当我给出一个硬编码的值时,该函数可以工作,我尝试了很多选项,但无法让它工作。
我看过类似的帖子,但都没有答案。
【问题讨论】:
-
你有想过这个吗?
-
还没有 - 找到答案后我会发布更新,现在我使用结帐插件来实现这一点
标签: php jquery ajax wordpress woocommerce