WordPressサイトの管理バー(ツールバー)を、管理者にのみ表示する方法を解説します。単純に「管理者かどうか」だけで判定する方法と、管理者本人のプロフィール設定(ツールバー表示のON/OFF)も尊重する方法の2通りを紹介します。
この記事でわかること
- 管理者にのみ管理バーを表示する完全なコード
- 個人のツールバー表示設定を尊重する理由と実装
current_user_can('administrator')より推奨される書き方
管理者にのみ管理バーを表示する(完全なコード)
テーマの functions.php に以下のコードを追加します。show_admin_bar フィルターに、管理バーを表示するかどうかを判定する関数を登録します。
functions.php:管理者かつ個人設定がONの場合のみ管理バーを表示
function my_show_admin_bar() {
$result = false;
// 現在のユーザーが「administrator」権限を持っているかどうかを確認
if ( current_user_can( 'administrator' ) ) {
$user_id = get_current_user_id();
// ユーザー本人のツールバー表示設定を取得('true' または 'false' の文字列で保存されている)
$show_admin_bar = get_user_meta( $user_id, 'show_admin_bar_front', true );
// 管理バー表示設定が明示的に'false'でない場合のみ表示する
if ( $show_admin_bar !== 'false' ) {
$result = true;
}
}
return $result;
}
add_filter( 'show_admin_bar', 'my_show_admin_bar' );
なぜ個人のツールバー設定も確認するのか
current_user_can()だけの判定では個人設定を上書きしてしまう
add_filter('show_admin_bar', function () { return current_user_can('administrator'); }); のようなシンプルな1行だけの実装もよく紹介されますが、この場合管理者本人がプロフィール画面で「ツールバーを表示する」のチェックを外していても、強制的に表示されてしまいます。get_user_meta() で show_admin_bar_front をあわせて確認することで、「管理者には表示する。ただし本人が個別にOFFにしていればそれを優先する」という、より丁寧な制御ができます。個人設定を気にせず一律で管理者に強制表示したいだけなら、シンプルな1行版でも構いません。current_user_can(‘administrator’)よりmanage_optionsが推奨される理由
ロール名でなく権限(Capability)で判定するのがWP推奨
current_user_can('administrator') のようにロール名を直接指定する書き方は動作はしますが、WordPressの開発者向けドキュメントでは、current_user_can('manage_options') のように具体的な権限(Capability)で判定することが推奨されています。ロール名は将来的にカスタムロールへ変更・追加される可能性があり、権限ベースの判定の方が「管理者相当の操作ができるかどうか」をより正確かつ柔軟に表現できるためです。manage_optionsは既定でadministratorロールのみが持つ権限のため、既定のサイト構成であればadministrator指定と同じ結果になります。関連する管理バーのカスタマイズ
自分だけ非表示にしたい・全員非表示にしたいなど、他のパターンについてはサイト上部のツールバー(管理バー)を非表示にする方法(全員・管理者以外・ユーザー別)で解説しています。個人設定を気にしないシンプルな「管理者以外だけ非表示」の1行実装もこちらで紹介しています。
よくある質問(FAQ)
Q特定のユーザーロールにだけ管理バーを表示する方法は?
A
current_user_can()でチェックするロールを変更します。例えばcurrent_user_can('editor')にするとエディター以上に表示、そうでなければ非表示になります。Qログインしていないユーザーに管理バーが表示される場合の対処法は?
A通常ゲストには管理バーは表示されませんが、show_admin_barフィルターが別のコードで上書きされている可能性があります。プラグインの影響も確認してください。
is_user_logged_in()との組み合わせで確実に制御できます。Q個人設定を無視して管理者に強制表示したいだけの場合は?
A
add_filter('show_admin_bar', function () { return current_user_can('manage_options'); }); のようなシンプルな1行で十分です。個人のツールバー表示設定を考慮する必要が無い場合はこちらで構いません。まとめ
- 基本:
show_admin_barフィルターに管理者判定の関数を登録する - 丁寧に:
show_admin_bar_frontで個人のツールバー設定も尊重する - 推奨:ロール名でなく
manage_options等の権限で判定する
個人設定を尊重したいかどうかで、今回のコードとシンプルな1行版を使い分けてください。

