WooCommerce Ajax Получить статус заказа - PullRequest
0 голосов
/ 24 августа 2018

Мой магазин WooCommerce будет обновлять статус заказа в течение нескольких минут для различных состояний. Аналогично тому, как работают онлайн-трекеры для пиццы, например, в духовке> выпечка> проверка> доставка.

В настоящее время я показываю статус моего заказа на странице благодарности -

<h3 class="order-status"><?php echo $order->status; ?></h3>

Но я хочу использовать ajax и, возможно, время ожидания jQuery для обновления состояния каждые 10 секунд.

setTimeout(fetchStatus, 10000);

Я не уверен, что для вызова мне потребуется создать функцию, использующую переменную global $wooCommerce, и продолжать обновлять ее таким образом?

Чтобы подтвердить это на пользовательском шаблоне страницы woocommerce, спасибо.

1 Ответ

0 голосов
/ 24 августа 2018

Вот решение.

HTML

Изменить это <h3 class="order-status" id="order_status"><?php echo $order->status; ?></h3>.

AJAX-скрипт

<script>
function fetchStatus()
{
    jQuery.ajax({
        url : '<?php echo site_url(); ?>/wp-admin/admin-ajax.php?action=fetch_order_status&order_id=<?php echo $order->get_order_number(); ?>',
        type : 'post',      
        error : function(response){
            console.log(response);
        },
        success : function( response ){
            jQuery('#order_status').text(response);
        }
    });
}

setInterval(fetchStatus, 1000);
</script>

functions.php

Добавьте это в файл functions.php вашей темы.

function fetch_order_status(){
    $order = wc_get_order( $_REQUEST['order_id'] );
    $order_data = $order->get_data();
    echo $order_data['status'];
    die();
}

add_action('wp_ajax_nopriv_fetch_order_status', 'fetch_order_status');
add_action('wp_ajax_fetch_order_status','fetch_order_status');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...