Функция switch_to_locale() в WordPress позволяет программно переключить язык сайта на заданную локаль. Это может быть полезно для адаптации интерфейса под предпочтения конкретного пользователя или для обеспечения многоязычности на сайте.
switch_to_locale( string $locale ): bool
Параметры
- $locale (string, обязательный): Локаль, на которую нужно переключиться. Например,
ru_RUдля русского языка илиen_USдля английского.
Возвращаемое значение
- bool: Возвращает
trueпри успешном переключении локали иfalseв случае ошибки.
Как работает функция
Функция switch_to_locale() была введена в WordPress версии 4.7 и предназначена для управления переводом сайта для отдельного пользователя. Она будет работать, только если пользователь установил язык перевода в настройках своего профиля или если он зарегистрировался в версии WordPress 4.7 или выше. Если пользователь не выбрал язык после обновления, локаль переключаться не будет.
Для проверки, была ли локаль переключена, можно использовать функцию is_locale_switched().
Хуки при переключении локали
При переключении локали срабатывают несколько событий:
change_locale: Срабатывает, когда локаль была изменена. Ядро использует этот хук для пере-создания типов записей и таксономий.switch_locale: Срабатывает, когда локаль переключена.restore_previous_locale: Срабатывает, когда локаль возвращается к предыдущей.
Пример 1: Переключение языка сайта на лету
Предположим, ваш сайт работает на русском языке, но вы хотите, чтобы админка отображалась на английском. Вы можете сделать это следующим образом:
if (is_admin()) {
switch_to_locale('en_US');
}
Кроме того, вы можете использовать хук для автоматического переключения локали:
add_action('init', function() {
switch_to_locale('en_US');
});
Этот код будет выполняться на этапе инициализации WordPress и переключит локаль на английскую.
Пример 2: Установка языка админки по условию
Вы можете определить локаль пользователя на основе его IP-адреса и записать эти данные в куки user_locale. Это позволит выставить язык сайта в зависимости от страны, из которой пришел пользователь:
add_action('init', function() {
if (isset($_COOKIE['user_locale'])) {
switch_to_locale($_COOKIE['user_locale']);
}
});
В этом примере, если куки user_locale установлены, функция переключит локаль на ту, которая указана в куки.
Пример 3: Проверка переключенной локали
Вы также можете проверить, была ли локаль успешно переключена, используя функцию is_locale_switched():
add_action('init', function() {
switch_to_locale('en_US');
if (is_locale_switched()) {
echo "Локаль была успешно переключена на английский.";
}
});
Заключение
Функция switch_to_locale() предоставляет разработчикам мощный инструмент для управления языком интерфейса в WordPress. Используя её, вы можете легко адаптировать контент и интерфейс под предпочтения отдельных пользователей, что может значительно улучшить пользовательский опыт на многоязычных сайтах. С помощью приведенных примеров вы можете легко интегрировать эту функцию в ваши темы и плагины.