管理バーは、管理画面からログインすることで、各ページの最上部に黒い帯のような形状で表示されadminバーとも呼びます。
この管理バーは、WordPressのデフォルトのテーマや、有料で配布されているテーマの場合は管理バーが上部に表示されている場合がほとんですが、自作のテーマの場合、自分で設定しなければ管理バーは表示されません。
今回は、WordPressのページで権限別に管理バーを表示させる方法についてご紹介します。
目次
そもそもですが、wp_headとwp_footerが記述されていないと、管理バーが表示されません。
これは管理バーに関わらず、WordPress全体に影響するコードなので記述しましょう。
wp_head()は</head>タグの直前に記述し、wp_footer()は</body>タグの直前に記述されているか確認しましょう。
<?php wp_head() ?>
</head>
--------省略--------
<?php wp_footer() ?>
</body>
管理画面のプロフィールから設定
管理画面のメニューの ユーザー>あなたのプロフィールのページにある、ツールバーの項目サイトを見るときにツールバーを表示するにチェックを入れましょう。
functions.phpにフィルターを追加する
wp_headとwp_footerの記述と、プロフィールの設定が完了したらfunctions.phpへ以下を追加することで、管理者・編集者・投稿者・寄稿者に管理バーが表示できます。
//管理バー表示
add_filter( 'show_admin_bar', 'set_adminbar' );
function set_adminbar( $adminbar ) {
$adminbar = true; /* true:表示 false:非表示 */
return $adminbar;
}
if (! current_user_can('edit_posts')){
show_admin_bar(false);
}
管理者権限によって管理バーの表示・非表示を分ける
if (! current_user_can('edit_posts')){
show_admin_bar(false);
}
の部分を以下のそれぞれに変更して記述することで、管理者のみに管理バーを表示させたり、管理者・編集者のみに表示させたりすることができます。
管理者のみ管理バー表示
//管理バー表示
add_filter( 'show_admin_bar', 'set_adminbar' );
function set_adminbar( $adminbar ) {
$adminbar = true; /* true:表示 false:非表示 */
return $adminbar;
}
if (! current_user_can('delete_users')){
show_admin_bar(false);
}
管理者・編集者で管理バー表示
//管理バー表示
add_filter( 'show_admin_bar', 'set_adminbar' );
function set_adminbar( $adminbar ) {
$adminbar = true; /* true:表示 false:非表示 */
return $adminbar;
}
if (! current_user_can('delete_private_posts')){
show_admin_bar(false);
}
管理者・編集者・投稿者で管理バー表示
//管理バー表示
add_filter( 'show_admin_bar', 'set_adminbar' );
function set_adminbar( $adminbar ) {
$adminbar = true; /* true:表示 false:非表示 */
return $adminbar;
}
if (! current_user_can('publish_posts')){
show_admin_bar(false);
}
管理バーとヘッダーが重ならないようにする方法
管理バーのheightは32pxなので、ヘッダーをその高さの分だけ下げればよいので、margin-top: 32px;
を指定します。
ただし、それだけだとWordPressにログインしていない一般ユーザーの方がサイトを見た時にヘッダーの上に不自然な隙間が開いてしまいます。
そこで、WordPressにログインしている時にのみCSSが挿入されるようなコードを使用します。
具体的には、下記のコードをhead区間に挿入しましょう。
<?php if( is_user_logged_in() ) : ?>
<style type="text/css">
.header {
margin-top: 32px;
}
</style>
<?php endif; ?>
.header
はヘッダーを指定するセレクタなので、各自のサイトで指定しているclassに変更しましょう。
管理バーを完全非表示
管理バーを非表示にしたいユーザーが、ユーザー>あなたのプロフィール のチェックを外すことで管理バーの非表示が可能ですが、そのような設定をすることなく管理バーを完全非表示にもできます。
その場合、functions.php に以下の一文を記述しましょう。
add_filter( 'show_admin_bar', '__return_false' );
これだけで、管理バーが完全非表示になりますが、プロフィール画面には表示非表示のチェック項目が残ってしまいので、同じくfunctions.php に以下の一文を追加して、プロフィール画面の項目も非表示にしましょう。
add_action('admin_print_styles-profile.php', 'disable_admin_bar_prefs');
function disable_admin_bar_prefs(){ ?>
<style type="text/css">
.show-admin-bar {display:none;}
</style><?php
}