Sto cercando di creare un piccolo plugin da installare in alcuni siti di un client tedesco.
Posso fare il giro di WordPress in tedesco, ma sarebbe più facile se fosse in inglese.
C'è un plugin che gestisce questo ( WP Native Dashboard ) e anche se lo fa meravigliosamente, è troppo pesante per quello di cui ho bisogno. Il cliente non ne ha bisogno, lo faccio.
Ho provato a emularlo inutilmente ... Memorizza un'opzione di database per verificare lo scambio anziché $current_user
. Ma non ho avuto la logica per farlo funzionare.
Quindi, sto cercando di adattare questa soluzione fornita da Toscho , ma sembra che non stia facendo i ganci nei punti corretti del processo di WordPress.
La domanda è: quale bit manca (o sto scherzando) nel seguente codice?
<?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
nessuno dei due - e sì, $current_user
è popolato, uso FirePHP per il debug ... grazie!
$current_user->data
è popolato :) Plus: funziona senza i controlli?
$current_user
- È abbastanza divertente perché le informazioni sono lì ...
admin_init
. Quindi rilasciais_admin();
e vedi se$current_user
contiene davvero un oggetto secondario denominatodata
.