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

Диагностика проблемы с переводом статусов заказов WooCommerce

Многие разработчики и владельцы WooCommerce сталкиваются с проблемой: статусы заказов отображаются только на основном языке, несмотря на установленный многоязычный плагин. Это происходит потому, что WooCommerce статусы не всегда корректно подключаются к системе перевода, особенно если используются кастомные статусы или автопереводчики без правильной настройки.

Проверьте, как именно выводятся статусы заказов на вашем сайте. Часто статусы берутся напрямую из массива $order->get_status(), который возвращает slug статуса, а не переведённое имя. Если в шаблонах не используется функция, которая переводит эти значения, вы увидите оригинальные названия.

Пошаговое решение: как добавить корректный перевод статусов заказов WooCommerce

1. Используйте функцию wc_get_order_status_name() для вывода статусов

WooCommerce предоставляет удобную функцию wc_get_order_status_name( $status ), которая возвращает человекочитаемое и локализованное имя статуса. В шаблонах и плагинах замените прямой вывод статуса на:

$order_status = wc_get_order_status_name( $order->get_status() );
echo esc_html( $order_status );

Это гарантирует, что будут использованы правильные переводы из языковых файлов WooCommerce.

2. Добавьте перевод кастомных статусов с помощью register_post_status() и локализации

Если у вас есть кастомные статусы заказов, зарегистрируйте их так:

register_post_status( 'wc-custom-status', array(
    'label'                     => _x( 'Обработка', 'Order status', 'your-textdomain' ),
    'public'                    => true,
    'exclude_from_search'       => false,
    'show_in_admin_all_list'    => true,
    'show_in_admin_status_list' => true,
    'label_count'               => _n_noop( 'Обработка <span class="count">(%s)</span>', 'Обработка <span class="count">(%s)</span>', 'your-textdomain' ),
) );

Обязательно добавьте переводы для вашего текстового домена в .po/.mo файлы или используйте плагины типа Loco Translate для корректной локализации.

3. Принудительно зарегистрируйте переводы для статусов в Polylang или WPML

Если вы используете Polylang или WPML, убедитесь, что переводы для статусов добавлены в строковые переводы. В WPML это делается через String Translation, в Polylang - через перевод строк в настройках.

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

1. Перейдите в админку WooCommerce > Заказы и проверьте отображение статусов в списке заказов. Статусы должны отображаться на выбранном языке.

2. На фронтенде зайдите в страницу заказа (например, страница «Мои заказы») и убедитесь, что статусы заказов отображаются корректно на нужном языке.

3. Используйте wpml-string-translation или аналогичный инструмент вашего плагина для проверки, что строки статусов переведены.

Частые ошибки при переводе статусов заказов WooCommerce

  • Вывод статуса через $order->get_status() без использования wc_get_order_status_name(). В результате вместо перевода выводится slug статуса.
  • Отсутствие перевода кастомных статусов в файлах .po/.mo. Даже если статус зарегистрирован, его название не переводится без соответствующих локализаций.
  • Плагины мультиязычности не настроены на перевод строк статусов. Нужно добавить строки в систему перевода вручную.
  • Использование кастомных функций или плагинов, которые напрямую выводят статусы без поддержки локализации.

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

  • Не редактируйте напрямую файлы WooCommerce или плагинов мультиязычности — используйте дочерние темы или собственные плагины для добавления кода.
  • Для вывода статусов используйте всегда готовые API WooCommerce, чтобы избежать проблем с совместимостью при обновлениях.
  • Оптимизируйте переводы, не дублируйте строки и не создавайте избыточных кастомных статусов без необходимости.
  • Для оптимизации загрузки сайта используйте кеширование переведённых строк (например, через WP Rocket, Clearfy Pro из WPShop), чтобы уменьшить количество запросов к базе данных.

Сравнение вариантов работы с переводами статусов WooCommerce

МетодПреимуществаНедостатки
Вывод $order->get_status() напрямуюПросто использовать, без дополнительного кодаНет перевода, выводится slug
Использование wc_get_order_status_name()Полная локализация, поддержка стандартных и кастомных статусовТребует замены кода в шаблонах
Кастомная регистрация статусов с register_post_status()Полный контроль над статусами, возможность локализацииНеобходимость создания и поддержки переводов
Перевод строк через WPML/PolylangУдобный интерфейс для переводчиков, интеграция с мультиязычностьюТребует ручного добавления и поддержки строк
Как использовать REST API WordPress для автоперевода контента
11.04.2026
Оптимизация автоперевода описаний товаров WooCommerce в WordPress
14.05.2026
Как исправить проблему с переводом постоянных ссылок (Permalinks) в WordPress
09.12.2025
Как создать функционал для автоперевода метаданных в WordPress
03.04.2026
Как добавить поддержку языков в собственном плагине WordPress
02.02.2026