Impostazione di WPLANG da un plugin


11

Per un wordpress di un singolo sito, la lingua deve essere impostata da wp-config.php's WPLANG, ma è possibile impostare dal mio plugin che sovrascrive il valore predefinito?


1
Il link appare anche nella colonna di destra di questa pagina, ma penso che valga la pena notare nei commenti un altro approccio per una situazione simile: wordpress.stackexchange.com/a/53678/12615
brasofilo

Risposte:


16

In wp-includes/l10n.phptroverai la funzione get_locale(). Offre un filtro; puoi impostare la lingua e ignorare la costante:

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

Per cambiarlo per plugin usa il filtro 'locale'. Esempio:

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

Funziona come una magia. Ma nel mio caso, è restituendo un errore: Fatal error: Cannot redeclare get_locale(). Quindi ho semplicemente cambiato il nome della funzione da get_locale()a nano_get_locale(), e funziona meravigliosamente.
Mayeenul Islam

3
@MayeenulIslam Si dovrebbe non copiare la get_locale()funzione che è una citazione dal nucleo. Tutto ciò che serve è l'ultimo blocco di codice.
fuxia

ottimo @toscho, molte grazie. Tuttavia, questo non funziona se accendo OPCache sul mio MAMPpro locale ... è così o c'è una soluzione?
Raphael Jeger,

@RaphaelJeger Questo non può essere influenzato da OPCache, solo un chache di output può farlo. Se il problema persiste, fai una nuova domanda.
fuxia
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.