Автоматическое завершение заказа Woocommerce

Автоматическое завершение заказа Woocommerce

По умолчанию Woocommerce после получения оплаты переводит заказ в статус «Обработка». Когда в магазине продаются виртуальные товары, важно завершать заказ сразу, чтобы пользователь мог получить доступ к купленному продукту.

Вставьте этот код в functions.php, чтобы заказы завершались автоматически:

//Автозавершение заказа
add_action( 'woocommerce_thankyou', 'auto_complete_woocommerce_order' );
function auto_complete_woocommerce_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    $order = wc_get_order( $order_id );
    $order->update_status( 'completed' );
}

Если в вашем магазине продаются не только виртуальные товары, будет полезно добавить в код проверку: есть ли в заказе виртуальные товары. Если есть — завершаем заказ. Если нет, заказ останется в статусе «Обработка»

// Автозавершение заказа, если в заказе есть хотя бы один виртуальный товар
add_action( 'woocommerce_thankyou', 'auto_complete_woocommerce_order' );
function auto_complete_woocommerce_order( $order_id ) { 
    if ( ! $order_id ) {
        return;
    }

    // Получаем объект заказа по его ID
    $order = wc_get_order( $order_id );

    // Переменная для отслеживания наличия виртуальных товаров
    $has_virtual = false;

    // Перебираем все товары в заказе
    foreach ( $order->get_items() as $item_id => $item ) {
        // Получаем продукт по ID
        $product = $item->get_product();

        // Проверяем, является ли продукт виртуальным
        if ( $product && $product->is_virtual() ) {
            $has_virtual = true;
            break;
        }
    }

    // Если есть хотя бы один виртуальный товар, меняем статус заказа на "Завершен"
    if ( $has_virtual ) {
        $order->update_status( 'completed' );
    }
}
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии