WordPress 管理画面で投稿メニューを非表示にする方法

WordPress の管理画面で投稿メニューを非表示にする方法を紹介します。
例えば、管理画面から投稿へアクセスさせたくない時に便利な方法です。

  1. 管理画面の投稿メニューを非表示
  2. 権限別に投稿メニューを非表示
  3. ユーザー別に管理画面の投稿メニューを非表示にする方法
    1. 複数の権限を対象にする方法

管理画面の投稿メニューを非表示

管理画面の投稿メニューを非表示にするには remove_menus を使用します。
次のコードを function.php に追加します。

/*【管理画面】投稿メニューを非表示 */
function remove_menus () {
global $menu;
remove_menu_page( 'edit.php' ); // 投稿を非表示
}
add_action('admin_menu', 'remove_menus');

この方法はメニューから投稿を取り除くだけで、ユーザーが投稿の編集画面へアクセスするのを防止するものではありません。
編集ページのアドレスがわかっている場合はアクセスできるので注意が必要です。

権限別に投稿メニューを非表示

権限別にメニューから投稿を取り除く場合は current_user_can を使用します。
例えば、管理者権限以外のユーザーが管理画面へログインした時に投稿メニューを非表示にしたい場合は、次のコードを function.php に追加します。

/* 【管理画面】管理者以外の投稿メニューを非表示 */
if (!current_user_can('administrator')) { // 管理者以外を対象
function remove_menus () {
global $menu;
remove_menu_page('edit.php'); // 投稿を非表示
}
add_action('admin_menu', 'remove_menus');
}

管理者を対象にするには論理演算子 ! を削除します。

if (current_user_can('administrator')) { // 管理者を対象
...省略...

権限のスラッグは以下の通りです。
• 管理者(slug : administrator)シングルサイト内のすべての管理機能にアクセスできるユーザー
• 編集者(slug : editor)他のユーザーの投稿を含むすべての投稿を発行、管理できるユーザー
• 投稿者(slug : author)自身の投稿を発行、管理できるユーザー
• 寄稿者(slug : contributor)自身の投稿を編集、管理できるが、発行はできないユーザー
• 購読者(slug : subscriber)プロファイル管理のみを実行できるユーザー

ユーザー別に管理画面の投稿メニューを非表示にする方法

ユーザー別にメニューから投稿を取り除く場合は、グローバル変数で現在のユーザーを取得します。
例えば、ユーザーID 1(管理者)以外のユーザーの時に投稿メニューを非表示にするには、次のコードを function.php に追加します。

/*【管理画面】ユーザー別に投稿メニューを非表示 */
global $current_user;
get_currentuserinfo();
if ($current_user->ID != '1' ) {
function remove_menus () {
global $menu;
remove_menu_page('edit.php'); // 投稿を非表示
}
add_action('admin_menu', 'remove_menus');
}

特定のユーザーを対象にするには比較演算子を != から == に変更します。

...省略...
if ($current_user->ID == '1' ) {
...省略...

ユーザーの判別にはユーザーIDを指定します。
管理者ユーザー以外のIDの確認方法は、ユーザーのプロフィールページに表示されるアドレス内に、ユーザーIDとして表示されています。

複数の権限を対象にする方法

複数のユーザーを対象にするには論理演算子の || を追加します。

...省略...
if ($current_user->ID == '1' || $current_user->ID == '2') {
...省略...

まとめ

WordPress の管理画面で投稿メニューを非表示にする方法を紹介しました。