Повышение эффективности: автоматическое выполнение заказов WooCommerce несколькими методами

Эффективное управление заказами имеет решающее значение для любого владельца магазина WooCommerce. Возможность автоматического заполнения заказов может сэкономить время и упростить процесс выполнения заказов. В этой статье мы рассмотрим несколько методов автоматического выполнения заказов WooCommerce, а также приведем примеры кода.

Метод 1. Использование хуков и действий WooCommerce.
Одним из распространенных подходов является использование хуков и действий WooCommerce для запуска автоматического выполнения заказов. Следующий фрагмент кода демонстрирует, как этого добиться:

function auto_complete_orders( $order_id ) {
    if ( ! $order_id ) {
        return;
    }
    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}
add_action( 'woocommerce_thankyou', 'auto_complete_orders' );

При подключении к действию 'woocommerce_thankyou'этот код автоматически помечает заказ как выполненный при успешной оплате.

Метод 2: запланированное задание с использованием задания Cron
Другой метод предполагает использование задания cron для планирования задания, которое автоматически выполняет заказы WooCommerce. Вот пример того, как настроить задание cron с помощью встроенного планировщика WordPress:

function scheduled_auto_complete_orders() {
    $args = array(
        'post_type'   => 'shop_order',
        'post_status' => 'wc-pending',
        'posts_per_page' => -1,
    );
    $orders = get_posts( $args );
    foreach ( $orders as $order ) {
        $order_id = $order->ID;
        $order = wc_get_order( $order_id );
        $order->update_status( 'completed' );
    }
}
add_action( 'scheduled_auto_complete_orders_hook', 'scheduled_auto_complete_orders' );
function schedule_auto_complete_orders() {
    if ( ! wp_next_scheduled( 'scheduled_auto_complete_orders_hook' ) ) {
        wp_schedule_event( time(), 'hourly', 'scheduled_auto_complete_orders_hook' );
    }
}
add_action( 'wp', 'schedule_auto_complete_orders' );

В этом методе функция scheduled_auto_complete_orders()извлекает все отложенные ордера и помечает их как выполненные.

Метод 3: пользовательское массовое действие
Вы также можете создать пользовательское массовое действие в интерфейсе администратора WooCommerce для автоматического выполнения нескольких заказов одновременно. Вот пример того, как это реализовать:

function register_custom_bulk_action() {
    add_action( 'admin_footer', 'custom_bulk_admin_footer' );
    add_action( 'load-edit.php', 'custom_bulk_action' );
}
add_action( 'admin_init', 'register_custom_bulk_action' );
function custom_bulk_admin_footer() {
    global $post_type;
    if ( 'shop_order' === $post_type ) {
        ?>
        <script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('<option>').val('auto_complete_orders').text('<?php _e( 'Auto Complete Orders' ); ?>').appendTo("select[name='action']");
                jQuery('<option>').val('auto_complete_orders').text('<?php _e( 'Auto Complete Orders' ); ?>').appendTo("select[name='action2']");
            });
        </script>
        <?php
    }
}
function custom_bulk_action() {
    global $typenow;
    if ( 'shop_order' !== $typenow ) {
        return;
    }
    $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
    $action2 = isset( $_REQUEST['action2'] ) ? $_REQUEST['action2'] : '';
    $actions = array( 'auto_complete_orders' );
    if ( in_array( $action, $actions ) || in_array( $action2, $actions ) ) {
        $order_ids = isset( $_REQUEST['post'] ) ? array_map( 'absint', $_REQUEST['post'] ) : array();
        $order_ids = array_merge( $order_ids, (array) $_REQUEST['post_ID'] );
        foreach ( $order_ids as $order_id ) {
            $order = wc_get_order( $order_id );
            $order->update_status( 'completed' );
        }
    }
}

Добавив пользовательское массовое действие, вы можете выбрать несколько заказов в интерфейсе администратора WooCommerce и выбрать действие «Автозаполнение заказов», чтобы выполнить их все одновременно.

Автоматическое заполнение заказов WooCommerce может значительно повысить эффективность процесса управления заказами. В этой статье мы рассмотрели три различных метода: использование перехватчиков и действий WooCommerce, планирование задачи с помощью задания cron и создание настраиваемого массового действия. В зависимости от ваших конкретных требований вы можете выбрать метод, который лучше всего соответствует вашим потребностям, и реализовать его, используя предоставленные примеры кода.

Не забудьте тщательно протестировать эти методы на промежуточном сайте, прежде чем внедрять их в действующем магазине WooCommerce.

Автоматизируя процесс выполнения заказов и оптимизируя управление заказами, вы можете сэкономить драгоценное время и ресурсы, позволяя сосредоточиться на других аспектах вашего бизнеса.