Facebook にシェア
[`evernote` not found]
LINEで送る

WordPress3.1がアップデートされて、管理メニューというのが追加されました。
これを有効にすると、ログイン中は上部にメニューが追加され、そこから投稿をしたりページを編集したりできます。
これが非常に便利そうなので色々調査してみました。

・使い方
この設定はユーザー毎にする必要があるようです。
プロフィール→show admin bar から管理画面と表示ページのどちらで(もしくは両方で)メニューを表示するかチェックを入れます。
上にメニューが表示されます。
注意点としては管理メニューの表示にはwp_footer();を利用しているのでテーマにwp_footer();が指定されていなかった場合は追加する必要があります。

・Custom Post Type UIを使ってる人の注意
Custom Post Type UIを利用している人で新規追加(Add New)の項目にカスタム投稿が追加されない人もいると思います。
原因は単数形のラベル(singular_name)を設定して無いせいだと思われます。
日本語だと単数複数の違いが無いので割と記述をしないで空のままの場合が多いので注意してください。

・メニューの追加
管理メニューにはadmin_bar_menuというフックが用意されています。
ここにフックすることでメニューを新しく追加することができます。

・管理メニュー変数$wp_admin_bar
実際の追加には$wp_admin_barという変数を使います。
追加方法

$wp_admin_bar->add_menu($option);

オプションには以下のようなのが用意されています。
id:メニューにIDを追加します。親メニューなら多分必須?実際にWEBで表示されるときにはwp-admin-bar-{ID}という形になります。
title:メニューに表示されるタイトルです。多分必須。
parent:メニューの下にさらにサブメニューを追加する場合はここで親IDを指定します。
href:メニューをクリックしたときのリンク先を指定します。
meta(array):その他のオプションを追加します。オプションの内容は
 title:aタグにtitleを追加します。
 class:メニューにクラスを追加します。
html:リンクの下にテキストを追加できます。
onclick:aタグにonclickイベントを追加できます。
target:aタグにtargetを追加できます。

$wp_admin_bar->add_menu(array('id'=>'hoge','title'=>'ほげ'));

メニューにほげという項目を追加します。
例2

$wp_admin_bar->add_menu(array('parent'=>'hoge','title'=>'ほげほげ','href'=>'http://exsample.com/','meta'=>array('target'=>'_blank')));

ほげのサブメニューにほげほげを追加し、クリックすると別ウインドウにhttp://exsample.comを開く。

上手く使うと管理メニューからいろんな場所へ移動することで編集が素晴らしく楽になると思います。
参考までに外観を拡張して現行テーマのテンプレートファイルを選んで編集できるようにするコードを紹介します。
(適当に作ったのでテーマファイルが多い場合見にくいです。また何か不具合があるかもしれません)

<?php
add_action( 'admin_bar_menu', 'wp_admin_bar_edit_page_menu', 65 );
function wp_admin_bar_edit_page_menu(){
	if (current_user_can('edit_themes') ){
		global $wp_admin_bar;
		$themes = get_themes();
		$theme = get_current_theme();
		$template_dir = $themes[$theme]['Template Dir'];
		$template_and_style = array_merge($themes[$theme]['Template Files'],$themes[$theme]['Stylesheet Files']);
		foreach ( $template_and_style as $template_file ) {	
				$template_show = basename($template_file);
				$href = admin_url('theme-editor') . ".php?file=" . str_replace(dirname(dirname($template_dir)),'',$template_file) . "&amp;theme=" . urlencode($theme) . "&amp;dir=theme";
				$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'title' => $template_show, 'href' => $href ) );
		}
	}
}
?>

これをfunctions.phpのどこか適当な場所に追加してください。