由於WPLANG在Wordpress 4中已棄用,因此您如何設置用戶選擇的語言? 在3.x.x我用定義( 'WPLANG',$ LANG)設置語言,然後在頁面上使用get_locale()它可以得到的版本。我需要使用這種方法來區分不同語言的內容。我知道可以在設置 - >常規中更改語言,但我需要以編程方式進行操作。Wordpress 4:WPLANG棄用。如何以編程方式更改語言?
感謝
由於WPLANG在Wordpress 4中已棄用,因此您如何設置用戶選擇的語言? 在3.x.x我用定義( 'WPLANG',$ LANG)設置語言,然後在頁面上使用get_locale()它可以得到的版本。我需要使用這種方法來區分不同語言的內容。我知道可以在設置 - >常規中更改語言,但我需要以編程方式進行操作。Wordpress 4:WPLANG棄用。如何以編程方式更改語言?
感謝
我找到了適用於我的解決方案。而不是使用define('WPLANG',$ _SESSION ['WPLANG']);我使用$ locale = $ _SESSION ['WPLANG'];。
與WordPress 4.0的定義WPLANG
從wp-config.php
是 - 正如你所提到的 - 貶值。它已被存儲在表<TablePrefix>_options
中的名爲WPLANG
的選項所取代。
你可以使用get_option()
訪問它:
$my = get_option('WPLANG','en_US');
更多變化的細節可以發現here。
可以使用過濾器locale
來動態調整值,而不是使用全局變量或常量。這對於將來的版本來說也會更加失敗。
add_filter('locale', function($default_locale) {
if (isset($_SESSION[ 'WPLANG' ]))
return $_SESSION[ 'WPLANG' ];
return $default_locale;
});
順便說一句,WPLANG
作爲會話密鑰是在風險可能造成命名衝突問題。請記住,其他WordPress插件也可能會使用全局會話。
我之前使用的代碼檢查了cookie並從那裏獲取了語言,然後在WPLANG和我使用get_locale()獲取它的頁面中設置了此語言。現在我可以得到一個cookie,但是如何爲當前用戶設置它?我應該使用update_option()嗎? – Alex 2014-12-09 01:59:11
對不起,我忘了提及檢查cookie和設置WPLANG是使用wp-config.php(require_once(dirname(__ FILE __)。'/ set-lang.php');)完成的。因此,在這種情況下,我認爲我不能使用update_option()... – Alex 2014-12-09 02:10:25
問題:您的用戶是否已登錄到您的基於WordPress的網站,或者用戶的意思是每個觀看該網站的人? – Bjoern 2014-12-09 05:39:56