Ich versuche ein kleines Plugin zu erstellen, um es auf einigen Sites eines deutschen Clients zu installieren.
Ich kann mich auf Deutsch in WordPress zurechtfinden, wäre aber einfacher, wenn es auf Englisch wäre.
Es gibt ein Plugin, das dies verwaltet ( WP Native Dashboard ) und obwohl es wunderbar funktioniert, ist es zu schwer für das, was ich brauche. Der Kunde braucht das nicht, das tue ich.
Versucht, es ohne Erfolg zu emulieren ... Es speichert eine Datenbankoption, um zu prüfen, ob anstelle von Swapping $current_user
. Aber ich habe die Logik dafür nicht verstanden.
Also versuche ich, diese von toscho gegebene Lösung anzupassen , aber es sieht so aus, als würde ich die Haken nicht an den richtigen Stellen des WordPress-Prozesses machen.
Die Frage ist: Welches Bit fehlt (oder ich vermassle es) im folgenden Code?
<?php
/*
Plugin Name: Set User Locale
Plugin URI: /wordpress//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();
quelle
admin_init
. Lassen Sie dann fallenis_admin();
und sehen Sie, ob$current_user
es wirklich ein Unterobjekt mit dem Namen enthältdata
.admin_init
nicht - und ja,$current_user
ist gefüllt, ich benutze FirePHP zum Debuggen ... danke!$current_user->data
es gefüllt ist :) Plus: Funktioniert es ohne die Schecks?$current_user
Antworten:
Ok, endlich zum Kern des Grundkonzepts von WP Native Dashboard gekommen und es funktioniert jetzt.
Die Datei wird als verwendet
mu-plugin
, und wenn ich auf der Site arbeiten muss, benenne ich sie vonset-user-locale.phpa
in umset-user-locale.php
und dann wieder zurück. Aktivieren und Deaktivieren, ohne dass das Plugin in Sichtweite des Clients ist.[update]
Nach dem Hinweis von kaiser wird dieses Plugin nur in der Plugin-Liste für den Benutzer angezeigt, der beim Initiieren der Klasse definiert wurde (dieselbe, für die die Sprache geändert wurde).
Das Plugin befindet sich jetzt im Stammverzeichnis des regulären Plugins-Ordners.
[Update 2]
Neue Version: Befasst sich nur mit dem Kern der Frage. Für das Verstecken verwende ich eine andere Technik . Da die Version 1.2 den Fehler hatte, sich nur automatisch zu verstecken, wenn sie aktiv war.
quelle
de-/activate
einfacher, einfach zu klicken ? ;) Schön zu sehen, dass es funktioniert. +1