Configurando WPLANG a partir de um Plug-in

11

Para um único site wordpress, o idioma deve ser definido a partir wp-config.phpde WPLANG, mas é possível definir no meu plug-in que substitui o valor padrão?

Howard
fonte
11
O link também aparece na coluna direita desta página, mas acho que vale a pena notar nos comentários outra abordagem para uma situação semelhante: wordpress.stackexchange.com/a/53678/12615
brasofilo

Respostas:

16

Em wp-includes/l10n.phpvocê encontrará a função get_locale(). Oferece um filtro; você pode definir o idioma e ignorar a constante:

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 );
}

Para alterá-lo por uso plug-in do filtro 'locale'. Exemplo:

add_filter( 'locale', 'wpse_52419_change_language' );
function wpse_52419_change_language( $locale )
{
    return 'de_DE';
}
fuxia
fonte
Funciona como uma mágica. Mas no meu caso, ele está retornando um erro: Fatal error: Cannot redeclare get_locale(). Simplesmente mudei o nome da função de get_locale()para nano_get_locale()e está funcionando maravilhosamente.
Mayeenul Islam #
3
@ MayeenulIslam Você não deve copiar a get_locale()função, é uma citação do núcleo. Tudo o que você precisa é do último bloco de código.
fuxia
ótimo @toscho, muito obrigado. No entanto, isso não funciona se eu ativar o OPCache no meu MAMPpro local ... é assim ou existe uma solução?
precisa saber é o seguinte
@RaphaelJeger Isso não pode ser afetado pelo OPCache, apenas uma chache de saída pode fazer isso. Se você ainda tiver esse problema, faça uma nova pergunta.
fuxia