BuddyPressのadmin barカスタマイズ + 削除方法

BuddyPressのテーマファイルをオリジナルから作成する際に、フッター領域のadmin barを削除して再構成したadmin barを任意の場所に設置したい。そんなときに活用できるPHPコードを紹介。

admin barを削除するには、テーマファイルのfunction.phpに下記コードを継ぎ足すだけ。

function remove_footer_admin_bar() {
	define( 'BP_DISABLE_ADMIN_BAR', true );
}
add_action('wp_footer', 'remove_footer_admin_bar', 0);

次にadmin barに表示されるメニューを再構成します。方法としてはremove_actionでbp_adminbar_menus内で実行される関数を削っていく感じ。下記のようにfunction.phpに書き足してテンプレートファイルから好きな場所から関数を実行させます。

function new_admin_menu() {
	global $bp;
	if ( is_user_logged_in() ) { //ログインしている場合
		remove_action('bp_adminbar_menus', 'bp_adminbar_blogs_menu', 6); //ブログメニューを削除
		remove_action('bp_adminbar_menus', 'bp_adminbar_authors_menu', 12); //管理者メニューを削除
		remove_action('bp_adminbar_menus', 'bp_adminbar_random_menu', 100); //ランダムメニューを削除
		do_action( 'bp_adminbar_menus' ); //admin barを表示
	}
}

上記の場合、ブログメニューと管理者メニュー、ランダムメニューを削除するサンプル。そのほかの項目を削除したい場合は以下を参照し書き足してください。

remove_action( 'bp_adminbar_menus', 'bp_adminbar_login_menu', 2 ); //ログインメニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_account_menu', 4 ); //アカウントメニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_blogs_menu', 6 ); //ブログメニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_thisblog_menu', 6 ); //現在のブログメニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_notifications_menu', 8 );//通知メニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_authors_menu', 12 ); //管理者メニュー
remove_action( 'bp_adminbar_menus', 'bp_adminbar_random_menu', 100 ); //ランダムメニュー

BuddyPressのカスタマイズはこの辺のfunction.phpとの戦いになるかと思います。

related story