Estoy tratando de hacer un pequeño complemento para instalar en algunos sitios de un cliente alemán.
Puedo recorrer WordPress en alemán, pero sería más fácil si estuviera en inglés.
Hay un complemento que gestiona esto ( WP Native Dashboard ) y, aunque lo hace maravillosamente, es demasiado pesado para lo que necesito. El cliente no necesita esto, yo sí.
Intenté emularlo en vano ... Almacena una opción de base de datos para verificar el intercambio en lugar de $current_user
. Pero no entendí la lógica para que esto funcione.
Entonces, estoy tratando de adaptar esta solución dada por toscho , pero parece que no estoy haciendo los ganchos en los puntos correctos del proceso de WordPress.
La pregunta es: ¿qué bit falta (o estoy jugando) en el siguiente código?
<?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
no , ninguno - y sí, $current_user
está poblado, uso FirePHP para depurar ... ¡gracias!
$current_user->data
está lleno :) Además: ¿funciona sin los cheques?
$current_user
- Es bastante divertido porque la información está ahí ...
admin_init
. Luego suelteis_admin();
y vea si$current_user
realmente contiene un subobjeto llamadodata
.