Blog

[WordPress] ツールバーをカスタマイズする

Posted by admin at 13:41 日時 2012/01/17

#

メモ程度に。3.3.1対応です。

Wロゴを削除する

Wロゴとその下層の「WordPressについて」「WordPress.org」などのメニューは wp-includes/admin-bar.php の関数 wp_admin_bar_wp_menu で定義されています。他のメニューもこのファイルに記載されています。

$wp_admin_bar->add_menu( array(  	'id'    => 'wp-logo',  	'title' => '<span class="ab-icon"></span>',  	'href'  => admin_url( 'about.php' ),  	'meta'  => array(  		'title' => __('About WordPress'),  	),  ) );

このようにグローバル関数 $wp_admin_bar から WP_Admin_Bar クラスのメソッド add_menu を使ってメニューを定義しています。wp_admin_bar_wp_menu 関数は同じく WP_Admin_Bar クラスのメソッド add_menus 内でアクションフック admin_bar_menu にフックされています。

add_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu', 10 );

したがって、これ以降のタイミングで同様に admin_bar_menu フックでメニューを取り除けばOKです。メニューを取り除くには remove_menu メソッドを使います。結果的にこのようなコードになりました。

function my_admin_bar_custom( $wp_admin_bar ) {  	$wp_admin_bar->remove_menu( 'wp-logo' );  }  add_action( 'admin_bar_menu', 'my_admin_bar_custom', 15 );

Wメニュー削除前

Wメニュー削除後

独自メニューを追加する

メニューの追加の仕方も、 admin-bar.php を見れば簡単でした。参考に作ってみたメニューがこちら

function my_admin_bar_additional( $wp_admin_bar ) {  	$wp_admin_bar->add_menu( array(  		'id'    => 'my-menu',  		'title' => '追加メニュー',  		'href'  => '#'  	) );    	$wp_admin_bar->add_menu( array(  		'parent'    => 'my-menu',  		'id'        => 'my-menu-sub',  		'title'     => '下層メニュー',  		'href'      => '#'  	) );  }  add_action( 'admin_bar_menu', 'my_admin_bar_additional', 100 );

表示順は100なので、80の編集ボタンの次に表示されます。

WordPressも最近の追加機能はクラス設計されているので、すごく使いやすいですね。

ツールバーをカスタマイズすることで、例えばカスタムヘッダーなどデフォルトのテーマ追加機能以外の機能を追加した際に、そこへのリンクをツールバーに足すことができます。あとは、いつも使うプラグインの管理画面へのショートカットを追加したりとか、色々便利な使い途はありそうです。

[2012/5/2 追記]

おでさんがもっと詳しい解説をアップされています!
管理バー WP Admin Bar を徹底的にカスタマイズしてみる


Share this entry