2014-09-24 9 views
9

Configuro le impostazioni multilingue in modo dinamico utilizzando il filtro locale. Che preleva il nome del sottodominio per determinare la lingua.Come impostare dinamici `home` e` siteurl` in WordPress?

function load_custom_language($locale) { 
    // get the locale code according to the sub-domain name. 
    // en.mysite.com => return `en` 
    // zh.mysite.com => return `zh_CN` 
    // tw.mysite.com => return `zh_TW` 
    // etc.. 
} 
add_filter('locale', 'load_custom_language'); 

che lavora per la pagina di indice, ma quando ho reindirizzare a un'altra pagina, a causa delle impostazioni di home e siteurl, reindirizza sempre il mio sito a quello originale (www.mysite.com).

Quindi sono curioso di scoprire un modo dinamico per filtrare la home e siteurl in base alla richiesta, perché potrei utilizzare più di un sub-dominio a mysite e ho solo un'impostazioni per le due impostazioni.

risposta

10

È possibile eseguire l'override delle impostazioni di amministrazione nel file wp-config.php. Quindi, se volete qualcosa di dinamico, il seguente dovrebbe funzionare:

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST']); 
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST']); 

Questo deve aggiungere prima che la linea

require_once(ABSPATH . 'wp-settings.php'); 

altrimenti si possono avere problemi con alcuni contenuti che utilizzano i URL sbagliate, soprattutto a tema File.

+0

Che non funziona, che ha trasformato il mio sito in un ciclo di reindirizzamento. Possa quel codice essere posto da qualche parte dopo? –

+0

hmm, dovrebbe funzionare. Se imposti un valore fisso invece di usare '$ _SERVER ['HTTP_HOST']' funziona? – Steve

+0

Ho impostato un valore fisso, quindi causa un 'ciclo di reindirizzamento' –

4

ho trovato un altro modo abbastanza per ottenere il lavoro:

Dopo ho controllato per il codice sorgente del kernel, ho scoperto che ci sono filtri distinte chiamate option_xxx su ogni opzioni.

Così, per il mio compito, ho cercato di utilizzare il filtro option_siteurl e option_home ritenere che le opzioni per caricare, proprio per evitare che la possibilità di caricare, mantenendo la SERVER_NAME ha:

function replace_siteurl($val) { 
    return 'http://'.$_SERVER['HTTP_HOST']; 
} 
add_filter('option_siteurl', 'replace_siteurl'); 
add_filter('option_home', 'replace_siteurl'); 

Utilizzando questo modo , non ha bisogno di cambiare il file wp_config.php e può essere facilmente aggiunto a un tema oa un plugin.

+0

Ciao, ho cercato di implementare un approccio simile per la modifica dell'URL di emojii js in WP: http://wordpress.stackexchange.com/questions/251910/modify-default-url-for-wp-includes-js-wp -embed-min-jsver-4-6-1, ma non solo non ha modificato l'URL predefinito, ma ha anche introdotto problemi con messaggi di errore intermittenti di 500 nel caricamento della pagina. Qual è il tuo punto di vista? I filtri sono una buona opzione? – paranza