【WordPress】管理者にのみ管理バーを表示する方法

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サイトの管理バーを管理者にのみ表示することができます。カスタム関数を使用し、ユーザーの権限と表示設定に基づいて管理バーの表示を制御する方法を学びました。これにより、サイトの管理をより効率的に行うことができるでしょう。