Вызовить действие woocommerce из другого действия не работает - PullRequest
0 голосов
/ 26 июня 2019

Я хочу вызвать собственное действие 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 );
}


}

нет сообщения об ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...