我正在尝试制作一个小插件,以安装在德国客户的某些站点中。
我可以用德语绕过WordPress,但是如果使用英语,会更容易。
有一个管理该插件的插件(WP Native Dashboard),尽管它做得非常好,但它太重了,无法满足我的需求。客户不需要这个,我需要。
试图模拟它无济于事...它存储一个数据库选项来检查交换而不是$current_user
。但是我没有逻辑上可以做到这一点。
因此,我正在尝试采用toscho给出的此解决方案,但似乎我没有在WordPress过程的正确点上做文章。
问题是:以下代码缺少什么(或者我搞砸了)?
<?php
/*
Plugin Name: Set User Locale
Plugin URI: https://wordpress.stackexchange.com/q/53326/12615
Description: changes the admin language according to user_login
Version: 1.0
Author: wordpress-stackexchange
*/
class Wpse53326_ChangeLocaleOnDemand
{
public function __construct()
{
add_action('admin_init', array(&$this, 'on_init'));
add_filter( 'locale', array(&$this, 'on_change_language') );
}
public function on_init()
{
}
public function on_change_language( $locale )
{
global $current_user;
// this prints the current user_login without problems
// global $firephp;
// $firephp->log($current_user->data->user_login,'user_login');
// the following works for backend/frontend
// but if I try this conditional, it don't: if (is_admin() && 'the_user_login' == $current_user->data->user_login)
if( is_admin() )
{
return 'en_US';
}
return $locale;
}
}
$wpse53326_ChangeLocaleOnDemand_instance = new Wpse53326_ChangeLocaleOnDemand();
@kaiser-不,
—
brasofilo 2012年
admin_init
不是,也不是- $current_user
是的,我使用FirePHP进行调试...谢谢!
好的,我问是否
—
凯撒2012年
$current_user->data
已填充:)加:它在没有检查的情况下是否有效?
@kaiser-我已经修改了问题中的代码-如果我不检查
—
brasofilo 2012年
$current_user
它就可以了-很有趣,因为那里的信息...
@kaiser-运行正常,您怎么看?谢谢!
—
brasofilo 2012年
admin_init
。然后删除is_admin();
并查看是否$current_user
确实包含名为的子对象data
。