2014-09-24 16 views
9

Çoklu dil ayarını locale filtresini kullanarak dinamik olarak yapıyorum. Dili belirlemek için alt alan adını getir. indeks sayfası için çalışır, ancak ben çünkü home ve siteurl ait ayarları, başka bir sayfaya yönlendirme zaman, her zaman orijinal (www.mysite.com) Sitemi yönlendirirWordPress'de dinamik `home` ve` siteurl` nasıl ayarlanır?

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

. Ben mysite için birden fazla alt etki alanını kullanabilirsiniz ve ben iki ayar için tek ayarlarına sahip olduğundan

Yani, isteğe göre home ve siteurl filtrelemek için dinamik bir yol bulmak için merak ediyorum.

cevap

10

wp-config.php dosyasındaki yönetici ayarlarını geçersiz kılabilirsiniz. Dinamik bir şey istiyorsanız Yani, şu çalışmalıdır:

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

Bu hat

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

yoksa yanlış URL'leri kullanarak bazı içerik ile sorunlar olabilir, özellikle tema önce eklenen gerekiyor Dosyalar. Ben çekirdek kaynak kodu için kontrol sonra

, ben her seçenekleri option_xxx denilen farklı filtre olduğunu bulduk:

+0

Bu işe yaramıyor, bu sitemi bir Yönlendirme Döngüsü'ne dönüştürdü. Bu kod bundan sonra bir yere yerleştirilebilir mi? –

+0

hmm, işe yaramalı. Eğer '$ _SERVER [' HTTP_HOST '] 'yerine sabit bir değer ayarlarsanız çalışır mı? – Steve

+0

Sabit bir değer belirledim, sonra bir 'yönlendirme döngüsü' –

4

ben işi başarmak için başka oldukça yolunu buldum.

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

bu şekilde kullanma:

Yani, benim görev için, ben sahip SERVER_NAME koruyarak yüklemek için sadece seçeneğini önlemek için, seçenekler yük olduğunu tutmaya option_siteurl ve option_home filtreyi kullanmaya çalıştı wp_config.php dosyasını değiştirmeye gerek yoktur ve bir temaya veya bir eklentiye kolayca eklenebilir.

+0

Merhaba, WP'de emojii js'nin URL'sini değiştirmek için benzer bir yaklaşım uygulamaya çalıştım: http://wordpress.stackexchange.com/questions/251910/modify-default-url-for-wp-includes-js-wp -embed-min-jsver-4-6-1, ancak sadece varsayılan URL'yi değiştirmedi, aynı zamanda sayfayı yüklerken aralıklı 500 hata mesajıyla ilgili sorunları da getirdi. Senin bakış açınız nedir? Filtreler iyi bir seçenek midir? – paranza