WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

switch_to_locale()WP 4.7.0

Позволяет программно переключить язык сайта.

Одна из нескольких функции введенных в WP 4.7 для управления переводом сайта для отдельного пользователя.

Функция будет работать только если пользователь установил какой-либо язык перевода в настройках профиля (любой даже «язык сайта»). Или если пользователь регистировался в версии WP 4.7 или выше. Но если вы обновили версию сайта, а пользователь еще не выбирал язык перевода, то локаль переключаться не будет. Возможно в будущем это поправят...

Чтобы проверить переключена ли локаль в текущий момент, используйте функцию is_locale_switched().

Хуки при переключении локали:

При переключении локали срабатывают несколько событий:

  • change_locale - срабатывает когда локаль уже изменена. Ядро использует его, чтобы пере-создать типы записей и таксономий.

  • switch_locale - срабатывает когда локаль переключена.

  • restore_previous_locale - срабатывает, когда локаль возвращена к предыдущей.
Работает на основе: WP_Locale_Switcher::switch_to_locale()

Хуков нет.

Возвращает

true|false. True on success, false on failure.

Использование

switch_to_locale( $locale );
$locale(строка) (обязательный)

Название локали, на которую нужно переключиться. Например: ru_RU или en_US.

Полный список локалей смотрите здесь

Примеры

0

#1 Переключим язык сайта на лету

Допустим наш сайт работает на русском, но в админке нам нужен английский язык. Тогда вставляем такой код в functions.php темы:

if( is_admin() )
	switch_to_locale('en_US');

Можно через хук:

add_action('init', function(){
	switch_to_locale('en_US');
});
0

#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_switcher WordPress locale switcher object.

Список изменений

С версии 4.7.0 Введена.

Код switch_to_locale() WP 6.4.3

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 );
}
2 комментария
    Войти