[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 を徹底的にカスタマイズしてみる