Blog

【WordPress】管理者以外の管理画面メニューをカスタム

2017/06/01

Wordpress

備忘録です。

投稿者権限で、カスタム投稿以外のメニューを表示したくないという要望がありカスタマイズしました。

参考サイト
【WordPress】管理画面メニューのカスタマイズ

まずメニューを非表示にする方法
function.phpに記述

function remove_menus () {
    global $menu;
    unset($menu[2]);  // ダッシュボード
    unset($menu[4]);  // メニューの線1
    unset($menu[5]);  // 投稿
    unset($menu[10]); // メディア
    unset($menu[15]); // リンク
    unset($menu[20]); // 固定ページ
    unset($menu[25]); // コメント
    unset($menu[59]); // メニューの線2
    unset($menu[60]); // テーマ
    unset($menu[65]); // プラグイン
    unset($menu[70]); // プロフィール
    unset($menu[75]); // ツール
    unset($menu[80]); // 設定
    unset($menu[90]); // メニューの線3
}
add_action('admin_menu', 'remove_menus');

サブメニューを削除したい場合は、$submenuを使います。
$submenuをvar_dump()すると配列の値を調べることが出来ます。

function remove_menus () {
    global $submenu;
    // var_dump($submenu);
    unset($submenu['edit.php'][5]); // 投稿一覧
}
add_action('admin_menu', 'remove_menus');

unsetではなく、remove_menu_pageでも非表示にすることが可能です。
function.phpに記述

function remove_menus () {
    remove_menu_page( 'index.php' );                  // ダッシュボード
    remove_menu_page( 'edit.php' );                   // 投稿
    remove_menu_page( 'upload.php' );                 // メディア
    remove_menu_page( 'edit.php?post_type=page' );    // 固定ページ
    remove_menu_page( 'edit-comments.php' );          // コメント
    remove_menu_page( 'themes.php' );                 // 外観
    remove_menu_page( 'plugins.php' );                // プラグイン
    remove_menu_page( 'users.php' );                  // ユーザー
    remove_menu_page( 'tools.php' );                  // ツール
    remove_menu_page( 'options-general.php' );        // 設定
}
add_action('admin_menu', 'remove_menus');

サブメニューを削除したい場合は、remove_submenu_pageを使います。
例えば、投稿の新規追加を非表示にしたい場合は以下のようにします。
unsetの時と同様に、非表示にしたいメニューの値を調べるには$submenuをvar_dump()します。

function remove_menus () {
    global $submenu;
    // var_dump($submenu);
    remove_submenu_page('edit.php', 'post-new.php');//投稿の新規投稿
}
add_action('admin_menu', 'remove_menus');

remove_submenu_page(‘メニュー名’,’サブメニュー名’)という書き方になります。

権限グループによって制御したい場合はcurrent_user_canを使います。
管理者ではない場合、投稿メニューを非表示

function remove_menus () {
    if (!current_user_can('administrator')) { //管理者ではない場合
       global $menu;
        unset($menu[5]);
    }
}
add_action('admin_menu', 'remove_menus');

unset($menu[*]);を追加することによりメニューの非表示を追加することができます。

【参考】権限グループ

  • 管理者 : administrator
  • 編集  : editor
  • 投稿者 : author
  • 寄稿者 : contributor
  • 購読者 : subscriber

ゼヒトモ内でのプロフィール: ROCKSTREAMゼヒトモのホームページ作成・制作サービス仕事をお願いしたい依頼者と様々な「プロ」をつなぐサービス

カテゴリー

月間アーカイブ

MORE

ミュージシャンズ・プラザ

神社仏閣ホームーページ制作

ホームページ制作問合せ