Я хочу вызвать собственное действие Woocommerce из другого действия, которое вызывается через wp_ajax. но родная акция Woocommerce не работает. хотя нативный Woocommerce работает, если я назвал его вне действия wp_ajax
Действие wp_ajax принимает значение из выбранного входного изменения (очевидно, я беру значение с использованием js) и передаю его другому действию из функции обратного вызова действия wp_ajax
$('#delivery_time_field_name').on('change', function(e) {
$.ajax({
url: ajax_object.ajaxurl,
type: 'post',
data: {
_ajax_nonce: ajax_object.ajax_nonce,
action: "update_order_review",
timeData: $( this ).val()
},
success: function(response) {
if (response.success) {
console.log(response.data)
$( 'body' ).trigger( 'update_checkout' );
}
}
});
});
add_action( 'wp_ajax_nopriv_update_order_review', 'update_order_review' );
add_action( 'wp_ajax_update_order_review', 'update_order_review' );
function update_order_review() {
$time_data = $_POST['timeData'];
add_action( 'woocommerce_cart_calculate_fees', function ($cart) use ($time_data) {
add_custom_fee($cart, $time_data);
}, 10, 2);
wp_send_json_success($time_data);
}
function add_custom_fee ( $cart, $time_data ) {
if(is_checkout()){
$time_slot_fee = 3;
if($time_data == "450,480") {
$time_slot_fee = 10;
} else {
$time_slot_fee = 20;
}
$delivery_date_fee = 10;
$cart->add_fee( __( 'Delivery Date Fee', 'demo-plugin' ) , $delivery_date_fee, false );
$cart->add_fee( __( 'Delivery Time Slot Fee', 'demo-plugin' ) , $time_slot_fee, false );
}
}
нет сообщения об ошибке