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Гибкий, зависит от статуса заказаНужно иметь страницы для каждого статуса
Плагины для редиректовУдобный интерфейс, без кодаМожет замедлять сайт, меньше гибкости
WooCommerce: как программно удалять неактивные корзины и заказы
31.05.2026
Как удалить или изменить URL записи WordPress без редиректа и ошибок 404
05.12.2025
Как избежать проблем с кэшированием в WordPress: практические советы
09.12.2025
Как правильно создать каскадные типовые шаблоны WordPress для сложных сайтов
03.01.2026
Как найти и убрать дубли страниц в WordPress без потери SEO
16.08.2026
×
Прокачай свой WordPress!

Скидка -20% на премиум темы и плагины

Воспользоваться сейчас ⋙