WPML
Статус
Решено
Заявлено для
WPML String Translation 2.4.2
Решено в
WPML String Translation 2.4.2.1

Обзор проблемы

При использовании WPML Multilingual & Multicurrency for WooCommerce 3.8.6 вместе с WPML 3.5.3 на странице подтверждения заказа после оформления заказа на дополнительном языке отображаются (или записываются в журнал) некоторые ошибки.

Сообщение об ошибке аналогично приведенному ниже:

PHP Notice: Undefined index: order-received in ../wp-content/plugins/woocommerce-multilingual/inc/class-wcml-endpoints.php on line 155

Помимо сообщения об ошибке, вместо страницы «Заказ получен» с информацией о заказе пользователям отображается переведенная страница «Оформление заказа» без какого-либо контента.

Пустая страница «Оформление заказа»
Пустая страница «Оформление заказа» на немецком языке

Несмотря на то, что заказы при этом успешно создаются и отправляются email-уведомления, клиенты могут запутаться, подумать, что заказ не прошел, и отправить дублирующиеся заказы.

Мы выяснили, что это связано с изменениями в WPML Перевод строк 2.4.2. Исправление уже готовится, но нам необходимо тщательно его протестировать, прежде чем выпустить обновление.

Обходное решение

Один из способов исправить это — использовать бета-версию 2.4.2.1-b1 для WPML Перевод строк. Она решает только эту конкретную проблему и не должна повлиять ни на что другое. Однако это бета-версия, поэтому рекомендуется соблюдать осторожность: сделайте резервную копию Вашего сайта и желательно сначала протестируйте её не на рабочем сайте.

Существует еще одно возможное обходное решение, которое Вы можете использовать временно и которое не должно сильно повлиять на пользовательский опыт. Это обходное решение заключается в том, чтобы отметить строку, соответствующую конечной точке «order-received», как непереводимую. Вам не нужно удалять строку, достаточно просто снять флажок «Перевод завершен». Ниже приведены шаги для случая, когда языком по умолчанию является английский. Шаги идентичны, если на Вашем сайте используется другой язык по умолчанию.


  1. Перейдите в WPML -> Перевод строк

  2. Найдите «order-received» или перейдите в домен «WooCommerce Endpoints» и найдите строку «order-received».

  3. Разверните раздел «Переводы» для строки «order-received»

  4. Снимите флажок «Перевод завершен» и нажмите «Сохранить» для всех языков
Отметьте конечную точку «order-received» как непереводимую
Отметьте конечную точку «order-received» как непереводимую

После этого Ваша страница «Заказ получен» по-прежнему будет переводиться. Просто строка конечной точки в URL-адресе не будет переведена.

Все известные проблемы →