독일 클라이언트의 일부 사이트에 설치할 작은 플러그인을 만들려고합니다.
독일어로 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();
admin_init
아니-그리고 $current_user
그래도 채워진다. 나는 디버깅을 위해 FirePHP를 사용한다 ... 고마워!
$current_user->data
채워 졌는지 물었다. :) Plus : 수표없이 작동합니까?
$current_user
.- 정보가 있기 때문에 꽤 재밌 습니다 ...
admin_init
. 그런 다음 이라는 하위 객체가 실제로 포함되어is_admin();
있는지 확인하십시오 .$current_user
data