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 могут также использовать глобальный сеанс.

Другие вопросы по тегам