【WordPress】管理画面のメニューなどカスタマイズ

wordpress_admin-customize特定のユーザーがログインしたときに投稿一覧を表示して、不要なメニューは非表示にしたいと調査したときの覚書。

環境: WordPress 4.8.3, PHP 7.0.25



1.左のメニューから不要なものを非表示

参考

admin_initに下記のような処理をフックする。

// ダッシュボードのアクセスは投稿一覧へ
if ('/wp-admin/index.php' == $_SERVER['SCRIPT_NAME']) {
     wp_redirect(admin_url( 'edit.php' ));
     return;
}

// メニューを非表示にする
remove_menu_page( 'index.php' );
remove_menu_page( 'edit-comments.php' );
remove_menu_page( 'upload.php' );
remove_menu_page( 'profile.php' );
remove_menu_page( 'tools.php' );

// アップデートのメッセージを非表示にする
remove_action( 'admin_notices', 'update_nag', 3 );

// 左のメニューにログアウトボタンを表示
global $menu;
$menu[] = [__('Logout'), 'read', wp_logout_url()];




2.上のadmin_barも不要なメニューを非表示

参考

admin_bar_menuに下記のような処理をフックする。実行する優先順位を下げないとwp-logoとか消えなかった。

function hoge_admin_bar_menu( $wp_admin_bar ) {
     $wp_admin_bar->remove_node('updates');
     $wp_admin_bar->remove_node('wp-logo');
     $wp_admin_bar->remove_node('comments');
     $wp_admin_bar->remove_node('new-content');
     $wp_admin_bar->remove_node('my-account');
}
add_action('admin_bar_menu', 'hoge_admin_bar_menu', 999);


あとは「特定ユーザーのみ」という処理は必要。


< Related Posts >