Мы всем своим клиентам рекомендуем регулярно обновлять систему управления сайтом, а также все установленные плагины, модули и компоненты. Понятно, что обновления, нужно устанавливать предварительно создав резервную копию сайта. И конечно же нужно обладать некоторыми знаниями в части администрирования сайта.
Недавно мы убедили в необходимости обновления сайта очередного клиента и приступили к работам. На этот раз обновляем интернет магазин на 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? Если ваша тема устарела, могут возникнуть проблемы с отображением некоторых шаблонов страниц магазина.