ユーザー権限によってダッシュボードの不要な項目を非表示にする

ユーザー権限によってダッシュボードの不要な項目を非表示にする

ワードプレスにログインした直後のダッシュボード画面に色々と表示されてますが、運用が安定期に入った後の、ようこそウィジェットなど使わなくないですか?

ダッシュボードウィジェットの選択

ダッシュボードウィジェット

さっそく、ダッシュボードウィジェットの選択方法です。

// ようこそ
remove_action( 'welcome_panel', 'wp_welcome_panel' );

// 概要
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );

// アクティビティ
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );

// クイックドラフト
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );

// イベントとニュース
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );

管理者以外全て非表示にする

次に書き方です。
これで管理者以外の権限でログインした際にすべて消えます。
※通常、管理者の場合は右上の表示オプションから非表示から非表示にするようにします。

function wpqw_remove_dashboard_widget() {
	if ( ! current_user_can( 'administrator' ) ) {
		remove_action( 'welcome_panel', 'wp_welcome_panel' );
		remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
		remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
		remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
		remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
	}
}
add_action( 'wp_dashboard_setup', 'wpqw_remove_dashboard_widget' );

すべて消した場合の問題点

ダッシュボードに何もない状態

すべて消してしまうとユーザビリティが下がり、逆に混乱を招く可能性があるため、概要とアクティビティ(4&5行目)などの一部は表示しておいた方が良いかもしれません。
この例では、コメントアウトする事で非表示にしていますが、行ごと削除してしまっても大丈夫です。

function wpqw_remove_dashboard_widget() {
	if ( ! current_user_can( 'administrator' ) ) {
		remove_action( 'welcome_panel', 'wp_welcome_panel' );
		// remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
		// remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
		remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
		remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
	}
}
add_action( 'wp_dashboard_setup', 'wpqw_remove_dashboard_widget' );

管理者とそれ以外で非表示項目を変える

管理者の場合、右上の表示オプションから非表示にしたほうが良いですが、クライアント側にも管理者ユーザーがいる場合には、2行目〜ifの間に書くことで全ユーザーに適応されます。

function wpqw_remove_dashboard_widget() {
	// 全ユーザー共通で非表示にしたいものをここに書く
	remove_action( 'welcome_panel', 'wp_welcome_panel' );
	if ( ! current_user_can( 'administrator' ) ) {
		// 管理者以外の場合に非表示にしたいものをここに書く
	}
}
add_action( 'wp_dashboard_setup', 'wpqw_remove_dashboard_widget' );