switch_to_locale()
Позволяет программно переключить язык сайта.
Одна из нескольких функции введенных в WP 4.7 для управления переводом сайта для отдельного пользователя.
Функция будет работать только если пользователь установил какой-либо язык перевода в настройках профиля (любой даже «язык сайта»).
Используйте is_locale_switched(), чтобы проверить переключена ли локаль в текущий момент.
Хуки при переключении локали:
При переключении локали срабатывают несколько событий:
-
change_locale — срабатывает когда локаль уже изменена. Ядро использует его, чтобы пере-создать типы записей и таксономий.
-
switch_locale — срабатывает когда локаль переключена.
- restore_previous_locale — срабатывает, когда локаль возвращена к предыдущей.
Хуков нет.
Возвращает
true|false. True on success, false on failure.
Использование
switch_to_locale( $locale );
- $locale(строка) (обязательный)
Название локали, на которую нужно переключиться. Например:
fr_FRoren_AU.Полный список локалей смотрите здесь
Примеры
#1 Переключим язык сайта на лету
Допустим наш сайт работает на русском, но в админке нам нужен английский язык. Тогда вставляем такой код в functions.php темы:
if( is_admin() )
switch_to_locale('en_US');
Можно через хук:
add_action('init', function(){
switch_to_locale('en_US');
}); #2 Установим язык админки по условию
Допустим, мы определяем локаль пользователя по IP и записываем эти данные в куку user_locale. Так мы знаем с какой страны пришел пользователь и можем выставить ему язык сайта на лету:
add_action('init', function(){
if( isset($_COOKIE['user_locale']) )
switch_to_locale( $_COOKIE['user_locale'] );
}
Заметки
- Global. WP_Locale_Switcher.
$wp_locale_switcherWordPress locale switcher object.
Список изменений
| С версии 4.7.0 | Введена. |
Код switch_to_locale() switch to locale WP 7.0.2
function switch_to_locale( $locale ) {
/* @var WP_Locale_Switcher $wp_locale_switcher */
global $wp_locale_switcher;
if ( ! $wp_locale_switcher ) {
return false;
}
return $wp_locale_switcher->switch_to_locale( $locale );
}