管理バーのカスタマイズ

WordPressにログインしているとページ上部に表示される「管理バー」をカスタマイズしたい時は以下のようなコード。

function admin_bar_custom( $wp_admin_bar ) {
	$userinfo = wp_get_current_user( );

	if($userinfo->roles[0]!='administrator'){
		$wp_admin_bar->remove_menu( 'wp-logo' );
		$wp_admin_bar->remove_menu( 'updates' );
		$wp_admin_bar->remove_menu( 'comments' );
		$wp_admin_bar->remove_menu( 'new-content' );

		$wp_admin_bar->add_menu( array(
			'id'    => 'my-menu',
			'title' => '新規作成'
		) );

		$wp_admin_bar->add_menu(array(
			'parent'    => 'my-menu',
			'id'        => 'my-menu-newpost',
			'title'     => '投稿',
			'href'      => 'post-new.php'
		));
	}
}
add_action( 'admin_bar_menu', 'admin_bar_custom', 100 );

このコードをfunctions.phpに追加すると、ログインしているユーザーが「管理者」ではない場合に、管理バーの「WordPressロゴ」「更新情報」「コメント」「+新規」を非表示にし、代わりに「新規作成」→「投稿」を追加する。

こんな感じで変化します↓

コード適用前

コード適用前

コード適用後

コード適用後

アクションフック「admin_bar_menu」を使い、引数$wp_admin_barのremove_menuでメニューから要素を非表示にし、add_menuで要素を追加する。

ちなみに、以下のようにadd_menuの引数配列のparentに親メニューにしたいidを設定することで、メニューの階層を作ることができる。(実験の結果5階層までは可能。それ以上は試してません。)

	$wp_admin_bar->add_menu( array(
		'id'    => 'my-menu',
		'title' => '親メニュー'
	) );

	$wp_admin_bar->add_menu(array(
		'parent'    => 'my-menu',
		'id'        => 'my-menu-child',
		'title'     => '子メニュー'
	));

	$wp_admin_bar->add_menu(array(
		'parent'    => 'my-menu-child',
		'id'        => 'my-menu-child2',
		'title'     => '子メニュー2'
	));

	$wp_admin_bar->add_menu(array(
		'parent'    => 'my-menu-child2',
		'id'        => 'my-menu-child3',
		'title'     => '子メニュー3'
	));
スポンサードリンク

twitterまたはFacebookでもコメントして頂けます