Проверьте статус последних незавершенных заказов в Woocommerce 3 - PullRequest
0 голосов

Если есть опыт, скажите, пожалуйста, как это сделать или план действий, чтобы идти в правильном направлении.

  1. Это необходимо для CRON, проверяющего статусы во внешней службе доставки (но это не важно).
  2. Получите незавершенные заказы или поочередно получите один незавершенный заказ.

Пример: У нас 3-5 незавершенных заказов (последние 24 часа). Я создаю некоторую функцию для проверки статуса незавершенного заказа. Получаю первый заказ, проверяю статус, если внешний статус сервиса меняется, то я меняю его в магазине. Действие завершено.

Статуты для проверки: удержание, обработка.

Интересует параграф 2.

Я нашел аргумент здесь, может быть, он подходит:

// Get refunds in the last 24 hours.
$args = array(
    'type' => 'shop_order_refund',
    'date_created' => '>' . ( time() - DAY_IN_SECONDS ),
);
$orders = wc_get_orders( $args );

1 Ответ

0 голосов
/ 28 июня 2018

Обновление 2 (Проверка заказов в течение 24 часов с даты создания)

Вы можете использовать этот очень легкий SQL-запрос, встроенный в служебную функцию, которая получит все идентификаторы заказов, которые имеют статус «В ожидании» и «Обработка», в течение 24 часов с даты создания заказа:

function get_order_ids_to_check(){
    global $wpdb;

    return $wpdb->get_col( "
        SELECT p.ID
        FROM {$wpdb->prefix}posts as p
        WHERE p.post_type LIKE 'shop_order'
        AND p.post_status IN ('wc-on-hold','wc-processing')
        AND UNIX_TIMESTAMP(p.post_date) >= (UNIX_TIMESTAMP(NOW()) - 86400)
    " );
}

Код помещается в файл function.php активной дочерней темы (или активной темы). Проверено и работает.


ИСПОЛЬЗОВАНИЕ - Вы можете использовать его где угодно, в другой функции, как в этом примере с поддельным кодом:

// Get the Orders IDs to check
$orders_ids = get_order_ids_to_check();

// Loop through each order Ids
foreach( $orders_ids as $order_id ){
    // Get the delivery order ID related to your external shipping service
    $delivery_order_id = get_post_meta( $order_id, 'delivery_order_id', true );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...