Я намагаюся зробити невеликий плагін, щоб встановити на деяких сайтах німецького клієнта.
Я можу обійти 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
не заселено :) Плюс: чи працює це без чеків?
$current_user
- Це дуже смішно, оскільки інформація є ...
admin_init
. Потім відпустітьis_admin();
і подивіться, чи$current_user
дійсно містить суб'єкт з назвоюdata
.