この記事は最後に更新してから1年以上経過しています。

いまさらだけどツールバー(admin bar)を使う

説明

これまでツールバーを積極的に活用することはなく、もっぱら show_admin_bar関数を使って非表示にしていた。そんなわけで、ツールバーについてはほとんど知識がなく、ソースコードを眺めながら使ってみた。

admin-bar.phpとclass-wp-admin-bar.php

ツールバーに深く関連するのがadmin-bar.phpとclass-wp-admin-bar.phpである。class-wp-admin-bar.phpにはWP_Admin_Barクラスが定義されており(これはフィルターによって変更可能)、ツールバーをコントロールする。次の図は、管理者がログインしている状態のツールバーで、上部が管理側、下部がコンテンツ側を示す。

ツールバーとメニューの優先度

このようにツールバーに表示されるメニュー内容は、管理側とコンテンツ側で異なる。また、ログイン中のユーザーが持つ権限によって変わり、例えば「+新規」メニューは投稿編集権限があるユーザーのみ表示される。

add_action関数の優先度

ツールバーに表示されているメニューは、WP_Admin_Barクラスのadd_menusメソッドにより add_action関数を使って指定されており、赤字はその優先度となる。具体的には、ツールバー左端のWordPressアイコンは次のように指定されている。

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

add_menusメソッドで登録された'admin_bar_menu'アクションは、 wp_admin_bar_render関数内で実行される。

do_action_ref_array( 'admin_bar_menu', array( &$wp_admin_bar ) );

テーマやプラグインで独自のメニューを追加する際はこのアクションを利用する。その際、add_action関数の第3パラメータが表示位置を決定する上でポイントになる。検証のため、テーマのfunctions.phpに次のようなコードを追加する。

add_action( 'admin_bar_menu', 'my_admin_bar_menu', $priority );

function my_admin_bar_menu( $wp_admin_bar ) {
	$wp_admin_bar->add_menu( array(
		'id'     => 'mylink',
		'title'  => 'mylink',
		'href'   => 'https://ja.wordpress.org/',
	) );
}

$priorityの値を変更しながら「mylink」の表示位置を確認。

$priorityの値ツールバーの表示
9WordPressロゴの左に「mylink」が表示される
15WordPressロゴの右に「mylink」が表示される
75+新規の右に「mylink」が表示される

「mylink」の表示位置の違いは一目瞭然である。

ツールバーの右側に追加するには

さて、$priorityの値をどんなに変更してもツールバーの右側にメニューを表示することはできない。右側に追加するには、先のコードに青字の部分を追加する必要がある。

add_action( 'admin_bar_menu', 'my_admin_bar_menu', $priority );

function my_admin_bar_menu( $wp_admin_bar ) {
	$wp_admin_bar->add_menu( array(
		'parent' => 'top-secondary',
		'id'     => 'mylink',
		'title'  => 'mylink',
		'href'   => 'https://ja.wordpress.org/',
	) );
}

さきほどと同様、$priorityの値を変更しながら「mylink」の表示位置を確認してみる。

$priorityの値ツールバーの表示
2検索アイコンの右に「mylink」が表示される
5検索アイコンの左に「mylink」が表示される
8「こんにちは、〇〇さん」の左に「mylink」が表示される

ツールバーの右側部分は優先度が高めで、「こんにちは、〇〇さん」の右側であれば7より小さい値を、左側であれば7より大きい値を指定することになる。


ツールバーに独自メニューを追加する際の表示位置に関しては以上となる。標準メニューと同じ優先度を指定(または省略)した場合は、add_action関数で呼び出すタイミングが影響するので、明示的に異なる値を指定すべきだ。


最終更新 : 2019年10月17日 14:25


お勧め

wp_print_inline_script_tag(2021年4月19日 更新)

void wp_print_inline_script_tag( string $javascript [ , array $attributes = array() ] )
インラインJavaScriptを含むscript要素を出力する。

register_rest_route(2022年8月17日 更新)

bool register_rest_route( string $namespace, string $route [ , array $args = array() [ , bool $override = false ] ] )
REST APIのルートを登録する。

wp_determine_option_autoload_value(2024年7月22日 更新)

string wp_determine_option_autoload_value( string $option, mixed $value, mixed $serialized_value, boo l |string $autoload )
自動ロードのトリガー値を取得する。

single_tag_title(2018年5月27日 更新)

string single_tag_title( [ string $prefix = '' [ , bool $display = true ] ] )
投稿タグアーカイブページの投稿タグ名を取得し、パラメータ$displayがtrueならば表示する。$displayがfalseの場合は、文字列として返す。

home_url(2023年3月31日 更新)

string home_url( [ string $path = '' [ , string $scheme = null ] ] )
現在のブログ(サイト)のホームURLを取得する。ホームURLは、管理者ページの「設定」-「一般」の「サイトのアドレス(URL)」のこと。