プラグインの開発中に、サイドメニューにプラグインを編集者以上の権限持つユーザーに項目が表示するように設定後、その動作を管理者と編集者で区別したいと考えていました。

因みに、編集者以上でサイドメニューに項目が表示する方法は以下で行いました。

 

add_action('admin_menu', function(){
//---------------------------------
// メインメニュー
//---------------------------------
  add_menu_page(
    'PLUGIN TITLE', // ページのタイトルタグ<title>に表示されるテキスト
    'PLUGIN TITLE', // 左メニューとして表示されるテキスト
    'edit_pages', // 編集者以上で表示する権限
    'MY_PLUGIN', // 左メニューのスラッグ名 
    'my_plugin_index', // メニューページを表示する際に実行される関数(サブメニュー①の処理をする時はこの値は空にする)
    'dashicons-admin-users', // メニューのアイコンを指定
    2 // メニューが表示される位置のインデックス
  );
});

 

その後、my_plugin_indexで呼ばれた関数でページを表示される予定ですが、その表示内容を管理者と編集者で分ける仕組みを作りたかったのですが、これが中々参考となる情報が出てこなくて大変困りました。

ユーザー側で行う関数はよく見つかるんですが、管理画面側はなかなかないものですね。

ようやく見つけた情報を参考にして解決した方法が以下の方法です。

 

if ( current_user_can( 'administrator' ) ) {
  echo "管理者";
} elseif ( current_user_can( 'editor' ) ) {
  echo "編集者";
}

 

current_user_can( ‘権限名’ ) という関数を利用し、現在ログインしているユーザーの権限と関数の権限名が同じであるかを判断しているそうです。

つまり、管理者であれば管理画面のどこかに「管理者」と表示されるはず。

管理画面を色々とあたる開発って中々大変だなーって思いました。