Налаштування 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, це може зробити лише вихідний ланцюг. Якщо у вас все ще виникає ця проблема, поставте нове запитання.
fuxia
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.