WordPress 4:WPLANG 已弃用.如何以编程方式更改语言


Wordpress 4: WPLANG deprecated. How to change language programmatically?

由于WPLANG在Wordpress 4中被弃用,你用什么来设置用户选择的语言?在3.x.x版本中,我使用define('WPLANG',$lang)来设置一种语言,然后在页面上可以使用get_locale()获取它。我需要使用这种方法来区分不同语言的内容。我知道可以在"设置->常规"中更改语言,但我需要以编程方式执行此操作。

谢谢

在WordPress 4.0中,wp-config.php的定义WPLANG - 正如你提到的 - 贬值。它已被一个名为 WPLANG 存储在表<TablePrefix>_options中的选项所取代。

您可以使用get_option()来访问它:

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

有关更改的更多详细信息,请参阅此处。

我找到了一个适合我的解决方案。而不是使用定义('WPLANG',$_SESSION['WPLANG']); 我使用 $locale = $_SESSION['WPLANG']; .

与其玩弄全局变量或常量,不如使用过滤器locale来动态调整值。对于将来的版本,这也将更加失败保存。

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

顺便说一下,会话中WPLANG作为密钥可能会导致命名冲突问题。请记住,其他WordPress插件也可能使用全局会话。