Настройка WPLANG из плагина


11

Для одного сайта WordPress язык должен быть установлен из wp-config.phps WPLANG, но можно ли установить из моего плагина, который переопределяет значение по умолчанию?


1
Ссылка также появляется в правом столбце этой страницы, но я думаю, что стоит отметить в комментариях другой подход к подобной ситуации: wordpress.stackexchange.com/a/53678/12615
brasofilo

Ответы:


16

В wp-includes/l10n.phpвы найдете функцию get_locale(). Он предлагает фильтр; Вы можете установить язык и игнорировать константу:

function get_locale() {
    global $locale;

    if ( isset( $locale ) )
        return apply_filters( 'locale', $locale );

    // WPLANG is defined in wp-config.
    if ( defined( 'WPLANG' ) )
        $locale = WPLANG;

    // If multisite, check options.
    if ( is_multisite() ) {
        // Don't check blog option when installing.
        if ( defined( 'WP_INSTALLING' ) || ( false === $ms_locale = get_option( 'WPLANG' ) ) )
            $ms_locale = get_site_option('WPLANG');

        if ( $ms_locale !== false )
            $locale = $ms_locale;
    }

    if ( empty( $locale ) )
        $locale = 'en_US';

    return apply_filters( 'locale', $locale );
}

Чтобы изменить его для каждого плагина, используйте фильтр 'locale'. Пример:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}

Работает как волшебство. Но в моем случае, это возвращается ошибка: Fatal error: Cannot redeclare get_locale(). Поэтому я просто изменил имя функции с get_locale()на nano_get_locale(), и оно работает чудесно.
Mayeenul Islam

3
@MayeenulIslam Вы не должны копировать get_locale()функцию, это цитата из ядра. Все, что вам нужно, это последний блок кода.
fuxia

здорово @toscho, большое спасибо. Тем не менее, это не работает, если я включаю OPCache на моем локальном MAMPpro ... это так, как есть, или есть решение?
Рафаэль Джегер

@RaphaelJeger На OPCache это не может повлиять, это может сделать только выходной chache. Если у вас все еще есть эта проблема, задайте новый вопрос.
fuxia
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.