J'essaie de faire un petit plugin à installer sur certains sites d'un client allemand.
Je peux me déplacer dans WordPress en allemand, mais ce serait plus facile s'il était en anglais.
Il y a un plugin qui gère cela ( WP Native Dashboard ) et bien qu'il le fasse à merveille, c'est trop lourd pour ce dont j'ai besoin. Le client n'a pas besoin de ça, j'en ai besoin.
J'ai essayé de l'émuler en vain ... Il stocke une option de base de données pour vérifier la permutation au lieu de $current_user
. Mais je n'ai pas eu la logique pour que cela fonctionne.
Donc, j'essaie d'adapter cette solution donnée par toscho , mais on dirait que je ne fais pas les crochets aux bons points du processus WordPress.
La question est: quel bit manque (ou je suis en train de déconner) dans le code suivant?
<?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();
la source
admin_init
. Ensuite, déposezis_admin();
et voyez s'il$current_user
contient vraiment un sous-objet nommédata
.admin_init
non , non plus - et oui,$current_user
est peuplé, j'utilise FirePHP pour le débogage ... merci!$current_user->data
est rempli :) Plus: ça marche sans les chèques?$current_user
- C'est assez marrant car les infos sont là ...Réponses:
Ok, enfin arrivé au cœur du concept de base de WP Native Dashboard et cela fonctionne maintenant.
Le fichier est utilisé en tant que
mu-plugin
, et chaque fois que je dois travailler sur le site, je le renomme deset-user-locale.phpa
àset-user-locale.php
, puis de nouveau. Ainsi, l'activation et la désactivation sans que le plugin ne soit visible par le client.[mise à jour]
Suivant le conseil de Kaiser, ce plugin n'apparaît que dans la liste des plugins pour l'utilisateur défini lors du lancement de la classe (la même pour laquelle la langue est modifiée).
Le plugin est maintenant situé à la racine du dossier des plugins standard.
[mise à jour 2]
Nouvelle version: ne traite que le cœur de la question. Pour la partie cachée, j'utilise une autre technique . Comme la version 1.2 avait le défaut de ne se cacher que lorsqu'elle était active.
la source
de-/activate
? ;) Très bien le voir fonctionner. +1