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();
fuente
admin_init
. Luego suelteis_admin();
y vea si$current_user
realmente contiene un subobjeto llamadodata
.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í ...Respuestas:
Ok, finalmente llegué al núcleo del concepto básico de WP Native Dashboard y está funcionando ahora.
El archivo se está utilizando como
mu-plugin
, y cada vez que tengo que trabajar en el sitio, le cambio el nombreset-user-locale.phpa
aset-user-locale.php
, y luego lo vuelvo a usar . Activando y desactivando así sin que el complemento esté a la vista del cliente.[actualización]
Siguiendo la sugerencia de kaiser, este complemento solo aparece en la lista de complementos para el usuario definido al iniciar la clase (el mismo para el que se cambia el idioma).
El complemento ahora se encuentra en la raíz de la carpeta de complementos normales.
[actualización 2]
Nueva versión: trata solo con el núcleo de la pregunta. Para la parte oculta estoy usando otra técnica . Como la versión 1.2 tenía la falla de solo ocultarse automáticamente cuando estaba activa.
fuente
de-/activate
sería más fácil hacer clic ? ;) Bien verlo funcionar. +1