Я пытаюсь сделать небольшой плагин для установки на некоторых сайтах немецкого клиента.
Я могу обойти 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();
plugin-development
admin
multi-language
brasofilo
источник
источник
admin_init
. Затем перейдитеis_admin();
и посмотрите$current_user
, действительно ли в нем содержится подобъект с именемdata
.admin_init
нет - и да,$current_user
он заполнен, я использую FirePHP для отладки ... спасибо!$current_user->data
заполнен ли он :) Плюс: он работает без проверок?$current_user
- Это довольно забавно, потому что информация есть ...Ответы:
Итак, наконец-то мы добрались до сути базовой концепции WP Native Dashboard, и теперь она работает.
Файл используется как
mu-plugin
, и всякий раз, когда мне нужно работать на сайте, я переименовываю его изset-user-locale.phpa
вset-user-locale.php
, а затем обратно. Таким образом, активация и деактивация без присутствия плагина на виду у клиента.[обновление]
Следуя подсказке Кайзера, этот плагин отображается только в списке плагинов для пользователя, определенного при запуске класса (того же, для которого язык был изменен).
Плагин теперь находится в корне обычной папки плагинов.
[обновление 2]
Новая версия: касается только сути вопроса. Для сокрытия я использую другую технику . Так как версия 1.2 имела недостаток только автоматического скрытия при активации.
источник
de-/activate
будет легче? ;) Прекрасно видеть, как это работает. +1