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

|

Проблема: стандартный заголовок страницы Спасибо за заказ не подходит

По умолчанию WooCommerce выводит фиксированный заголовок (title) на странице «Спасибо за заказ» (Order Received). В большинстве тем это заголовок «Спасибо за заказ». Иногда требуется изменить заголовок динамически — например, добавить номер заказа, имя пользователя или другую информацию, чтобы улучшить UX или SEO.

Диагностика проблемы

Чтобы убедиться, что заголовок стандартный и не изменяется, откройте страницу завершения заказа (обычно /checkout/order-received/) и посмотрите код страницы или заголовок вкладки браузера. Скорее всего, там стоит статичный текст.

Проверить, какой именно заголовок используется:

add_action('wp_head', function() {
    if (is_order_received_page()) {
        echo '<!-- Заголовок страницы: ' . get_the_title() . ' -->';
    }
});

Если тема выводит заголовок через wp_title() или the_title(), то можно влиять на него фильтрами.

Как программно изменить заголовок страницы «Спасибо за заказ»

WooCommerce не предоставляет отдельного фильтра для изменения заголовка страницы оформления заказа, но WordPress позволяет менять заголовок через фильтр document_title_parts. Используем этот фильтр для модификации.

Шаги решения

  1. Добавьте следующий код в файл functions.php вашей темы или в плагин-сниппет:
add_filter('document_title_parts', function($title) {
    if (function_exists('is_order_received_page') && is_order_received_page()) {
        $order_id = absint(isset($_GET['order']) ? $_GET['order'] : 0);
        if ($order_id) {
            $order = wc_get_order($order_id);
            if ($order) {
                $customer_name = $order->get_billing_first_name() ?: 'клиент';
                $title['title'] = 'Спасибо за заказ №' . $order_id . ', ' . esc_html($customer_name);
            }
        }
    }
    return $title;
});

Этот код проверяет, что мы на странице подтверждения заказа, получает ID заказа из URL, и если заказ существует, меняет заголовок, добавляя номер заказа и имя клиента.

Что делает код:

Проверка результата

После добавления кода:

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

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

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

Сравнение вариантов изменения заголовка

МетодПлюсыМинусы
Фильтр document_title_partsПростой, универсальный, не зависит от темыМожет конфликтовать с темами, которые жестко задают заголовок
Редактирование шаблона thankyou.phpПолный контроль над выводомТребует поддержки при обновлениях WooCommerce
Использование wp_title или pre_get_document_titleАльтернативные фильтры, могут работать в старых версиях WPМенее универсальны, могут не сработать с SEO-плагинами

Дополнительный пример: сохранение ID заказа в сессии

Если ID заказа не передаётся в URL, можно сохранить его в сессии при оформлении заказа:

add_action('woocommerce_thankyou', function($order_id) {
    if ($order_id) {
        WC()->session->set('last_order_id', $order_id);
    }
});

add_filter('document_title_parts', function($title) {
    $order_id = WC()->session->get('last_order_id');
    if ($order_id) {
        $order = wc_get_order($order_id);
        if ($order) {
            $customer_name = $order->get_billing_first_name() ?: 'клиент';
            $title['title'] = 'Спасибо за заказ №' . $order_id . ', ' . esc_html($customer_name);
        }
    }
    return $title;
});
WooCommerce: как изменить вид отображения товара в списке заказов без плагинов
10.07.2026
Как автоматически удалять неактивных пользователей WordPress
23.03.2026
WooCommerce: программное удаление неактивных корзин и заказов без плагинов
04.06.2026
WooCommerce: установка ограничений на сроки доставки и способы оплаты для конкретных товаров
03.05.2026
WooCommerce: как программно удалять неактивные корзины и заказы
31.05.2026
×
-15%
на премиум плагин
Clearfy

Защитите сайт!

Включить Clearfy »