Estou tentando fazer um pequeno plugin para instalar em alguns sites de um cliente alemão.
Posso percorrer o WordPress em alemão, mas seria mais fácil se fosse em inglês.
Existe um plug-in que gerencia isso ( WP Native Dashboard ) e, embora o faça maravilhosamente, é muito pesado para o que eu preciso. O cliente não precisa disso, eu preciso.
Tentou emular sem sucesso ... Ele armazena uma opção de banco de dados para verificar a troca em vez de $current_user
. Mas não entendi a lógica para que isso funcionasse.
Então, eu estou tentando adaptar essa solução dada pelo toscho , mas parece que não estou conseguindo entender os pontos corretos do processo do WordPress.
A questão é: que bit está faltando (ou estou mexendo) no código a seguir?
<?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
fonte
fonte
admin_init
. Em seguida, solteis_admin();
e veja se$current_user
realmente contém um subobjeto chamadodata
.admin_init
nem - e sim,$current_user
é preenchido, eu uso o FirePHP para depuração ... obrigado!$current_user->data
está preenchido :) Além disso: funciona sem os cheques?$current_user
- É muito engraçado porque a informação está lá ...Respostas:
Ok, finalmente cheguei ao cerne do conceito básico do WP Native Dashboard e está funcionando agora.
O arquivo está sendo usado como um
mu-plugin
e, sempre que eu tiver que trabalhar no site, o renomeio deset-user-locale.phpa
paraset-user-locale.php
e, em seguida, novamente. Assim, ativar e desativar sem que o plug-in esteja à vista do cliente.[update]
Seguindo a dica do kaiser, este plugin só aparece na lista de plugins para o usuário definido ao iniciar a classe (a mesma para a qual o idioma foi alterado).
O plug-in agora está localizado na raiz da pasta regular de plug-ins.
[atualização 2]
Nova versão: trata apenas do núcleo da questão. Para a parte escondida, estou usando outra técnica . Como a versão 1.2, havia a falha de apenas ocultar automaticamente quando ativo.
fonte
de-/activate
seria mais fácil? ;) Bem, vendo isso funcionar. +1