ドイツのクライアントのいくつかのサイトにインストールする小さなプラグインを作成しようとしています。
私はドイツ語でWordPressを回避できますが、英語の方が簡単です。
これを管理するプラグイン(WPネイティブダッシュボード)があり、それは素晴らしいことですが、私が必要とするものに対しては重すぎます。クライアントはこれを必要としません。
無駄にエミュレートしようとしました...の代わりにスワッピングをチェックするデータベースオプションを保存します$current_user
。しかし、これが機能するためのロジックがわかりませんでした。
だから、私はtoschoによって与えられたこのソリューションを適応させようとしていますが、WordPressプロセスの正しいポイントでフックを作成していないようです。
問題は、次のコードで欠けている(または混乱している)ビットは何ですか?
<?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
どちらでもありません-はい、設定され$current_user
ています。デバッグにはFirePHPを使用します...ありがとう!
$current_user->data
が入力されているかどうかを尋ねました:)プラス:チェックなしで機能しますか?
$current_user
- 確認しなくても機能します
admin_init
。次に、ドロップしてis_admin();
、$current_user
という名前のサブオブジェクトが実際に含まれているかどうかを確認しますdata
。