WordPressサイトの管理バーを管理者にのみ表示する方法を解説します。特定のユーザー権限とユーザー設定に基づいて管理バーの表示を制御する方法を紹介します。
関数の定義
まず、管理バーの表示を制御するカスタム関数を定義します。この関数では、現在のユーザーが管理者かどうかを確認し、さらに管理バーの表示設定を考慮します。
function my_show_admin_bar() {
$result = false;
// 現在のユーザーが「administrator」権限を持っているかどうかを確認
if (current_user_can('administrator')) {
// 現在のユーザーのIDを取得
$user_id = get_current_user_id();
// ユーザーの管理バー表示設定を取得
$show_admin_bar = get_user_meta($user_id, 'show_admin_bar_front', true);
// 管理バー表示設定がオフでない場合
if ($show_admin_bar !== 'false') {
$result = true;
}
}
return $result;
}
フィルターに関数を追加
次に、add_filter を使用して show_admin_bar フィルターにカスタム関数を追加します。このフィルターにより、管理バーの表示が制御されます。
add_filter('show_admin_bar', 'my_show_admin_bar');
完全なコード
以下が完全なコードです。このコードをテーマの functions.php ファイルに追加してください。
function my_show_admin_bar() {
$result = false;
// 現在のユーザーが「administrator」権限を持っているかどうかを確認
if (current_user_can('administrator')) {
// 現在のユーザーのIDを取得
$user_id = get_current_user_id();
// ユーザーの管理バー表示設定を取得
$show_admin_bar = get_user_meta($user_id, 'show_admin_bar_front', true);
// 管理バー表示設定がオフでない場合
if ($show_admin_bar !== 'false') {
$result = true;
}
}
return $result;
}
add_filter('show_admin_bar', 'my_show_admin_bar');
よくある質問(FAQ)
Q. 管理者(administrator)のみ管理バーを表示するコードは?
A. add_filter(‘show_admin_bar’, function($show){ return current_user_can(‘administrator’) ? $show : false; })をfunctions.phpに追加します。管理者以外には管理バーが非表示になります。
Q. 特定のユーザーロールにだけ管理バーを表示する方法は?
A. current_user_can()でチェックするロールを変更します。例えばcurrent_user_can(‘editor’)にするとエディター以上に表示、そうでなければ非表示になります。
Q. ログインしていないユーザーに管理バーが表示される場合の対処法は?
A. 通常ゲストには管理バーは表示されませんが、show_admin_barフィルターが別のコードで上書きされている可能性があります。プラグインの影響も確認してください。is_user_logged_in()との組み合わせで確実に制御できます。
まとめ
この手順に従うことで、WordPressサイトの管理バーを管理者にのみ表示することができます。カスタム関数を使用し、ユーザーの権限と表示設定に基づいて管理バーの表示を制御する方法を学びました。これにより、サイトの管理をより効率的に行うことができるでしょう。
