2014-12-07 100 views
3

由於WPLANG在Wordpress 4中已棄用,因此您如何設置用戶選擇的語言? 在3.x.x我用定義( 'WPLANG',$ LANG)設置語言,然後在頁面上使用get_locale()它可以得到的版本。我需要使用這種方法來區分不同語言的內容。我知道可以在設置 - >常規中更改語言,但我需要以編程方式進行操作。Wordpress 4:WPLANG棄用。如何以編程方式更改語言?

感謝

回答

1

我找到了適用於我的解決方案。而不是使用define('WPLANG',$ _SESSION ['WPLANG']);我使用$ locale = $ _SESSION ['WPLANG'];

0

與WordPress 4.0的定義WPLANGwp-config.php是 - 正如你所提到的 - 貶值。它已被存儲在表<TablePrefix>_options中的名爲WPLANG的選項所取代。

你可以使用get_option()訪問它:

$my = get_option('WPLANG','en_US'); 

更多變化的細節可以發現here

+0

我之前使用的代碼檢查了cookie並從那裏獲取了語言,然後在WPLANG和我使用get_locale()獲取它的頁面中設置了此語言。現在我可以得到一個cookie,但是如何爲當前用戶設置它?我應該使用update_option()嗎? – Alex 2014-12-09 01:59:11

+0

對不起,我忘了提及檢查cookie和設置WPLANG是使用wp-config.php(require_once(dirname(__ FILE __)。'/ set-lang.php');)完成的。因此,在這種情況下,我認爲我不能使用update_option()... – Alex 2014-12-09 02:10:25

+0

問題:您的用戶是否已登錄到您的基於WordPress的網站,或者用戶的意思是每個觀看該網站的人? – Bjoern 2014-12-09 05:39:56

0

可以使用過濾器locale來動態調整值,而不是使用全局變量或常量。這對於將來的版本來說也會更加失敗。

add_filter('locale', function($default_locale) { 
    if (isset($_SESSION[ 'WPLANG' ])) 
     return $_SESSION[ 'WPLANG' ]; 

    return $default_locale; 
}); 

順便說一句,WPLANG作爲會話密鑰是在風險可能造成命名衝突問題。請記住,其他WordPress插件也可能會使用全局會話。

相關問題