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.