Эффективное управление заказами имеет решающее значение для любого владельца магазина 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.
Автоматизируя процесс выполнения заказов и оптимизируя управление заказами, вы можете сэкономить драгоценное время и ресурсы, позволяя сосредоточиться на других аспектах вашего бизнеса.