サイドバーやアドミンバーのメニュー項目を削る

よくあるカスタマイズですが、サイドバーやアドミンバーのメニュー項目を削ってみたいと思います。

コード

サイドバー

function have_a_sidebar_rm_sidebar_menu_exclude_admin() {
    // ログイン時
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        // 管理者以外
        if ( ! in_array( 'administrator', $current_user->roles, true ) ) {
            remove_menu_page( 'edit-comments.php' );   // コメント
//            remove_menu_page( 'plugins.php' );       // プラグイン
            remove_menu_page( 'tools.php' );           // ツール
            remove_menu_page( 'options-general.php' ); // 設定
        }
    }
}
add_action( 'admin_menu', 'have_a_sidebar_rm_sidebar_menu_exclude_admin', 999 );

まずはサイドバーのサンプル。

  • 管理者以外のユーザに対して
  • コメント・プラグイン・ツール・設定を隠す

Smart Custom Fields の設定画面を開くためには manage_options の権限が必要ですが、この権限を付けると「ツール」や「設定」の項目が表示されてしまうので、それを隠すのが主目的です。

プラグインは表示されないのでコメントアウト。

アドミンバー

function foobar_rm_adminbar_menu_exclude_admin( $wp_admin_bar ) {
    // ログイン時
    if ( is_user_logged_in() ) {
        $current_user = wp_get_current_user();
        // 管理者以外
        if ( ! in_array( 'administrator', $current_user->roles, true) ) {
            $wp_admin_bar->remove_menu( 'wp-logo' );        // WordPressロゴ
            $wp_admin_bar->remove_menu( 'about' );          // WordPressロゴ / WordPressについて
            $wp_admin_bar->remove_menu( 'wporg' );          // WordPressロゴ / WordPress.org
            $wp_admin_bar->remove_menu( 'documentation' );  // WordPressロゴ / ドキュメンテーション
            $wp_admin_bar->remove_menu( 'support-forums' ); // WordPressロゴ / サポート
            $wp_admin_bar->remove_menu( 'feedback' );       // WordPressロゴ / フィードバック
            $wp_admin_bar->remove_menu( 'updates' );        // 更新
            $wp_admin_bar->remove_menu( 'comments' );       // コメント
            $wp_admin_bar->remove_menu( 'new-content' );    // 新規投稿
            $wp_admin_bar->remove_menu( 'new-post' );       // 新規投稿 / 投稿
            $wp_admin_bar->remove_menu( 'new-media' );      // 新規投稿 / メディア
            $wp_admin_bar->remove_menu( 'new-page' );       // 新規投稿 / 固定
            $wp_admin_bar->remove_menu( 'new-user' );       // 新規投稿 / ユーザー
            $wp_admin_bar->remove_menu( 'dashboard' );      // サイト名 / ダッシュボード (公開側)
            $wp_admin_bar->remove_menu( 'search' );         // 検索 (公開側)
//            $wp_admin_bar->remove_menu( 'my-account' );   // マイアカウント
            $wp_admin_bar->remove_menu( 'user-info' );      // マイアカウント / プロフィール
            $wp_admin_bar->remove_menu( 'edit-profile' );   // マイアカウント / プロフィール編集
        }
    }
}
add_action( 'admin_bar_menu', 'foobar_rm_adminbar_menu_exclude_admin', 999, 1 );

続いてアドミンバーについて。

  • 管理者以外のユーザに対して
  • 以下を隠す
    • WordPress のロゴや WordPress へのサイトのリンク
    • 更新(アップデート)
    • コメント
    • 投稿の新規追加等
    • 自身のアカウントのプロフィール編集
      • プロフィールそのものを隠すとログアウトも非表示になってしまうので my-account は残す
    • サイト名・検索 (公開側)

ログインはさせるが管理画面側の機能は殆ど触らせないようなケースの想定です。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。