ユーザーの役割に基づいて管理テーマを変更する方法を考えています。現在、私はプラグインを使用して管理テーマを変更することができます(例: Blue Admin ) - しかし、役割に基づいてそれらの変更を加える方法がわかりません(加入者など).
特定の役割のためだけに特定のメニュー項目などを表示させたい場合もあります。
私はfunctions.php
やこれを達成するのに必要と思われる何か他のものに飛び込むのに問題はありません - 最初に正しい方向に向けられることを望みます。
あなたはできる セット 関数を介して特定の管理配色プロユーザー役割を強制します。
個人的には、profile.php(バックエンドユーザー/あなたのプロフィール)からスキームを選択するオプションを最初に外します
以下は、特定のユーザーロールに特定の配色を設定する単なる関数例です。
この関数を追加する前に、まずfunctions.phpのバックアップを作成してください。
/**
* Set Admin Color Scheme by Role
* Codex: {@link https://codex.wordpress.org/Roles_and_Capabilities}
* {@link https://codex.wordpress.org/Function_Reference/wp_get_current_user}
* @version WordPress 4.6
*/
add_filter( 'get_user_option_admin_color', 'wpse_238039_set_admin_color' );
function wpse_238039_set_admin_color()
{
$current_user = wp_get_current_user();
// Check for the user role
if ( user_can( $current_user, 'subscriber' ) )
{
// Remove the Admin Color Scheme picker
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
// Set the Admin Color Scheme you want for this role
return 'light';
}
if ( user_can( $current_user, 'contributor' ) )
{
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );
return 'coffee';
}
} // end function
もちろん、それらの行を関数から削除することで、ユーザーのプロファイルページの[Admin Color Scheme]オプションをそのままにすることもできます。
特定の役割のためだけに特定のメニュー項目などを表示させたい場合もあります。
同じ種類のIFステートメントブロックを使用して、別の関数内で項目を追加または削除することができます。特定の関数で何をしたいのかを知り、正しい フックを使うこと
注:上記の関数の@link URLを参照してください。
管理配色はuser_meta
にadmin_color
として格納されます(デフォルトは 'fresh')。
user_registration
で起動するコールバックを書くことができます。
add_action( 'user_register', 'wpse_registration_save', 10, 1 );
function wpse_registration_save( $user_id ) {
# ...get the user role
# ...write switch statement based on role
# ... update_user_meta($user_id, 'admin_color', 'funky');
}
Blue Adminでこれがどのように機能するかはわかりませんが、プラグインを使用せずにこれを実行する方法になるでしょう。それが賢い場合、Blue Adminはそのテーマ情報をuser_meta
にも格納するので、どちらの方法でも非常によく似たアプローチかもしれません。