Мы всем своим клиентам рекомендуем регулярно обновлять систему управления сайтом, а также все установленные плагины, модули и компоненты. Понятно, что обновления, нужно устанавливать предварительно создав резервную копию сайта. И конечно же нужно обладать некоторыми знаниями в части администрирования сайта.
Недавно мы убедили в необходимости обновления сайта очередного клиента и приступили к работам. На этот раз обновляем интернет магазин на Wordpress с плагином Woocommerce. Кроме Woocommerce установлено еще около 50 плагинов, примерно половина требует обновления.
Текущая версия Wordpress 5.x. Обновляемся до Wordpress 6.x (точнее Wordpress 6.2.2). Некоторые плагины платные – поэтому для их обновления потребовалось скачивать обновления вручную с сайтов разработчиков. Дополнительно обновили платную тему для Wordpress.
После обновления сайта как на фронтенде, так и в админке для плагина Woocommerce вместо надписей на русском языке появились надписи на английском. Причём что-то осталось на русском, но основная часть перевода не работает.
Перевод на русский язык слетел в карточке товара.
Также русский «пропал» в корзине
В админке поля редактора карточек товаров стали на английском
Настройки Woo тоже на английском, но названия в боковой консоли админки на русском
Переносим эту «криво обновлённую» версию сайта на тестовый домен, закрытый от посетителей. А на основном домене восстанавливаем версию из бэкапа. Начинаем искать причину проблем с локализацией для русского языка на тесте.
Пробуем отключать плагины, по нескольку штук за раз, чтобы быстрее найти вызывающие конфликт.
Таких оказалось три:
- Slider Revolution
- Popup Builder
- Contact Form 7
Slider Revolution – отключение не влияет на локализацию фронтенда, но в админке, настройки Woocommerce и настройки редактора карточек товаров на русском языке. Быстро находим решение проблемы. Русский перевод у Slider Revolution отсутствует. С помощью плагина Loco Translate добавляем перевод на русский для Slider Revolution, причем переводим первую попавшуюся фразу. То есть полную локализацию не делаем.
И что же – с включенным плагином Slider Revolution административная часть для Woocommerce вновь на русском языке.
На одном из форумов находим информацию, что конфликт с языковой версией Woocommerce вызван плагином Contact Form 7, и предлагается замечательное решение удалить все созданные формы и затем создать их заново. Решаем проверить. Экспортируем формы с помощью инструменты / экспорт. Создаем новую тестовую версию – и да, карточка товаров, корзина и сортировка списка товаров на фронтенде – всё на русском.
Вроде бы всё хорошо, решение есть. Теперь пробуем импортировать формы обратно, и проблема локализации опять возвращается. Получается решение не очень хорошее, создать заново вручную более десятка форм – так себе перспектива.
А что же Popup Builder? Почему его отключение влияет на локализацию? Дело в том, что все всплывающие окна созданные этим плагином, содержат шорткоды форм. Если деактивировать все эти окна русская локализация на фронтенде работает. То есть реально, проблема локализации Woocommerce на фронтенде только в Contact Form 7.
На форуме поддержки CF7 находим причину конфликта и решение https://wordpress.org/support/topic/contact-form-7-conflicts-with-woocommerce-translations/page/2/
Вот что нужно сделать:
Находим файл /wp-content/plugins/contact-form-7/includes/contact-form.php,
В файле находим следующий код:
* Returns the locale code of this contact form.
*
* @return string Locale code. Empty string if no valid locale is set.
*/
public function locale() {
if ( wpcf7_is_valid_locale( $this->locale ) ) {
return $this->locale;
} else {
return '';
}
}
В нем меняем $this->locale на ''
Должно получиться так:
/**
* Returns the locale code of this contact form.
*
* @return string Locale code. Empty string if no valid locale is set.
*/
public function locale() {
if ( wpcf7_is_valid_locale( $this->locale ) ) {
return '';
} else {
return '';
}
}
И всё! Проблема слетевшего перевода на русский язык для плагина Woocommerce после обновления Wordpress решена. Данное решение проверено нами на версиях CF7 5.9.7 и 6.0
А теперь хорошие новости от 12 ноября!
Вышла версия Wordpress 6.7. После обновления проблема локализации решается полностью, или почти полностью. Возможно также потребуется обновить Woocommerce до версии 9.4.1. Может остаться непереведенной часть про адрес доставки: Shipping Address, Ship to a different address?
Если вам удалось решить проблему с русским языком для Woocommerce, вы можете выразить нам благодарность в любом размере - деньги мы любим.