WooCommerce: как устроить автоперенаправление после оформления заказа

|

Зачем нужно перенаправлять пользователя после оформления заказа в WooCommerce

По умолчанию WooCommerce после успешного оформления заказа отправляет пользователя на страницу "Спасибо за заказ" (thankyou). Однако в некоторых случаях требуется изменить это поведение: перенаправить на кастомную страницу с инструкциями, страницу опроса или на каталог товаров. Это помогает улучшить пользовательский опыт и повысить конверсию.

Диагностика текущего поведения WooCommerce после заказа

Для начала проверьте, куда именно происходит перенаправление после оформления заказа:

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

Пошаговое решение: программное перенаправление после заказа

Чтобы реализовать автоматическое перенаправление пользователя на произвольную страницу после успешного оформления заказа, воспользуемся хуком template_redirect и проверим, что пользователь на странице "order received".

Добавьте следующий код в файл functions.php вашей дочерней темы или в отдельный плагин:

add_action('template_redirect', 'custom_redirect_after_order_received');
function custom_redirect_after_order_received() {
    if (is_order_received_page()) {
        // URL для перенаправления
        $redirect_url = home_url('/custom-thank-you/');
        wp_safe_redirect($redirect_url);
        exit;
    }
}

В этом примере пользователь будет отправлен на страницу /custom-thank-you/, которую нужно заранее создать в админке WordPress.

Как сделать перенаправление зависимым от статуса заказа

Иногда нужно отправлять на разные страницы в зависимости от статуса заказа (например, на страницу с инструкциями для оплаты при статусе "ожидает оплаты"). Для этого используйте фильтр woocommerce_thankyou:

add_action('woocommerce_thankyou', 'redirect_based_on_order_status');
function redirect_based_on_order_status($order_id) {
    if (!$order_id) return;
    $order = wc_get_order($order_id);
    if (!$order) return;

    $status = $order->get_status(); // например, 'processing', 'pending', 'completed'

    if ($status === 'pending') {
        wp_safe_redirect(home_url('/payment-instructions/'));
        exit;
    } elseif ($status === 'processing') {
        wp_safe_redirect(home_url('/order-confirmation/'));
        exit;
    }
    // для прочих статусов оставьте стандартное поведение
}

Проверка результата после внедрения

Частые ошибки и как их исправить

Практические советы по безопасности и производительности

Сравнение вариантов реализации автоперенаправления

МетодПример кодаПлюсыМинусы
template_redirect + is_order_received_page()Пример 1Простой, универсальныйПеренаправляет на любую страницу, может быть слишком общий
woocommerce_thankyou с проверкой статусаПример 2Гибкий, зависит от статуса заказаНужно иметь страницы для каждого статуса
Плагины для редиректовУдобный интерфейс, без кодаМожет замедлять сайт, меньше гибкости
Как автоматизировать создание резервных копий в WordPress с помощью плагинов и кода
12.12.2025
Как добавить собственные типы записей (Custom Post Types) в WordPress
22.11.2025
Как добавить настройки в регистрацию WordPress с подтверждением email
08.02.2026
Как автоматически удалять некорректные корзины и заказы в WooCommerce
29.04.2026
Как добавить поддержку видеоплеера HTML5 в WordPress с примерами и плагинами
05.04.2026
×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше