Próbuję zrobić małą wtyczkę do zainstalowania na niektórych stronach niemieckiego klienta.
Poradzę sobie z WordPress po niemiecku, ale byłoby łatwiej, gdyby był po angielsku.
Istnieje wtyczka, która zarządza tym ( WP Native Dashboard ) i chociaż robi to wspaniale, jest zbyt ciężka na to, czego potrzebuję. Klient tego nie potrzebuje.
Próbowałem emulować go bezskutecznie ... Przechowuje opcję bazy danych, aby sprawdzić zamianę zamiast $current_user
. Ale nie zrozumiałem logiki, żeby to zadziałało.
Próbuję więc dostosować to rozwiązanie podane przez toscho , ale wygląda na to, że nie robię haków we właściwych punktach procesu WordPress.
Pytanie brzmi: czego brakuje (lub mam problemy) w poniższym kodzie?
<?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();
plugin-development
admin
multi-language
brasofilo
źródło
źródło
admin_init
. Następnie upuśćis_admin();
i sprawdź, czy$current_user
naprawdę zawiera podrzędny obiekt o nazwiedata
.admin_init
nie , nie - i tak,$current_user
jest zapełniony, używam FirePHP do debugowania ... dzięki!$current_user->data
jest wypełnione :) Plus: czy to działa bez kontroli?$current_user
- To dość zabawne, ponieważ informacje są tam ...Odpowiedzi:
Ok, w końcu dotarłem do sedna podstawowej koncepcji WP Native Dashboard i teraz działa.
Plik jest używany jako plik
mu-plugin
i za każdym razem, gdy muszę pracować w witrynie, zmieniam jego nazwę zset-user-locale.phpa
naset-user-locale.php
, a następnie ponownie. W ten sposób aktywacja i dezaktywacja bez wtyczki na widoku klienta.[aktualizacja]
Zgodnie ze wskazówkami Kaiser, ta wtyczka pojawia się tylko na liście wtyczek dla użytkownika zdefiniowanego podczas inicjowania klasy (tej samej, dla której język został zmieniony).
Wtyczka znajduje się teraz w katalogu głównym zwykłego folderu wtyczek.
[aktualizacja 2]
Nowa wersja: dotyczy tylko sedna pytania. Do ukrycia używam innej techniki . Ponieważ wersja 1.2 miała wadę automatycznego ukrywania się, gdy była aktywna.
źródło
de-/activate
byłoby łatwiejsze? ;) Dobrze widzieć, jak to działa. +1