WordPress管理画面のメニューを整理する

WordPressの管理画面でお客様に応じて必要ないメニューもあるときってありますよね…

プラグイン等でも削除できますが、functions.phpからも簡単に削除できるので
余計なプラグインを使いたくない人や、一部非表示にしたいだけだからプラグイン使うまでもないって案件などで使ってみてください。

管理画面からメニューを非表示にするには、、、

下記のコードをfunctions.phpに記載すると管理画面から非表示になります。
こちらは、ワードプレスの主要な管理画面メニューをほとんど全部消してしまう例なので必要に応じて削除して使ってください!

PHP
function remove_menu() {

		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.php?post_type=カスタムポストのslug' ); // 固定.
		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_menu', 999 );


また、if文で条件を指定すると特定のユーザーや権限のユーザーだけで管理画面の左メニューを一部見えなくするということも可能です。

PHP
if ( current_user_can( 'administrator' ) ) {
	// 管理者の場合
} elseif ( current_user_can( 'editor' ) ) {
	// 編集者の場合
} elseif ( current_user_can( 'author' ) ) {
	// 投稿者の場合
} elseif ( current_user_can( 'contributor' ) ) {
	// 寄稿者の場合
} elseif ( current_user_can( 'subscriber' ) ) {
	// 購読者の場合
}

管理画面のメニューの並び替えは….

下記のコードを使用してカスタム投稿を増やしたりすると思った通りの見た目になります。

PHP
// メニューの並び替え
function my_custom_menu_order($menu_order) {
    if (!$menu_order) return true;
    return array(
        'index.php', //ダッシュボード
        'separator1', //セパレータ1
        'edit.php', //投稿
        'edit.php?post_type=カスタムポストのスラグ', //カスタムポスト
        'separator2', //セパレータ2
        'edit.php?post_type=page', //固定ページ
        'edit-comments.php', //コメント
        'separator-last', //最後のセパレータ
        'themes.php', //外観
        'plugins.php', //プラグイン
        'users.php', //ユーザー
        'tools.php', //ツール
        'options-general.php', //設定
        'upload.php', //メディア
    );
}
add_filter('custom_menu_order', 'my_custom_menu_order'); 
add_filter('menu_order', 'my_custom_menu_order');

デフォルトの投稿のラベルを変更する

PHP
// 投稿のラベルを変更する
function change_post_label()
{
  global $menu;
  global $submenu;
  $name = 'NEWS';
  $menu[5][0] = $name;
  $submenu['edit.php'][5][0] = $name . '一覧';
  $submenu['edit.php'][10][0] = '新しい' . $name;
}
function change_post_object_label()
{
  global $wp_post_types;
  $name = 'NEWS';
  $labels = &$wp_post_types['post']->labels;
  $labels->name = $name;
  $labels->singular_name = $name;
  $labels->add_new = _x('追加', $name);
  $labels->add_new_item = $name . 'の新規追加';
  $labels->edit_item = $name . 'の編集';
  $labels->new_item = '新規' . $name;
  $labels->view_item = $name . 'を表示';
  $labels->search_items = $name . 'を検索';
  $labels->not_found = $name . 'が見つかりませんでした';
  $labels->not_found_in_trash = 'ゴミ箱に' . $name . 'は見つかりませんでした';
}
add_action('init', 'change_post_object_label');
add_action('admin_menu', 'change_post_label');

お客様に応じて管理画面を整理してあげることは、今後のサイトの運用を円滑に進める上でとても大切なことです。
こちらの記事を参考にお客様が使いやすい管理画面のメニュー作りをしてみてください。