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 об’єкт.

список змін

З версії 4.7.0Введено.

Код switch_to_locale() WP 6.0.2

function switch_to_locale( $locale ) {
	/* @var WP_Locale_Switcher $wp_locale_switcher */
	Global $wp_locale_switcher;

	return $wp_locale_switcher->switch_to_locale( $locale );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *