Wordpress 4: WPLANG устарела. Как изменить язык программно?
Поскольку WPLANG устарела в Wordpress 4, что вы используете для установки выбранного пользователем языка? В версиях 3.xx я использовал define('WPLANG', $lang), чтобы установить язык, и затем на страницах его можно было получить с помощью get_locale (). Мне нужно использовать этот подход, чтобы дифференцировать контент для разных языков. Я знаю, что можно изменить язык в Настройки-> Общие, но мне нужно сделать это программно.
Спасибо
3 ответа
Я нашел решение, которое работает для меня. Вместо использования define ('WPLANG', $_SESSION['WPLANG']); Я использую $locale = $_SESSION['WPLANG'];,
В WordPress 4.0 определение WPLANG
от wp-config.php
как вы уже сказали, амортизируется. Он был заменен опцией под названием WPLANG
хранится в таблице <TablePrefix>_options
,
Вы могли бы использовать get_option()
чтобы получить к нему доступ:
$my = get_option('WPLANG','en_US');
Более подробную информацию об изменении можно найти здесь.
Вместо манипулирования с глобальными переменными или константами можно использовать фильтр locale
адаптировать значение на лету. Это также было бы более отказоустойчивым для будущих выпусков.
add_filter( 'locale', function( $default_locale ) {
if ( isset( $_SESSION[ 'WPLANG' ] ) )
return $_SESSION[ 'WPLANG' ];
return $default_locale;
} );
Кстати, WPLANG
поскольку ключ в сеансе, вероятно, может вызвать проблему конфликта имен. Имейте в виду, что другие плагины WordPress могут также использовать глобальный сеанс.