管理画面、WordPress、管理者以外のユーザーがダッシュボードにアクセスできないようにする

Web運用(サイト構築)

概要

WordPressサイトのセキュリティを強化する一つの方法として、管理画面へのアクセスを管理者のみに制限する設定があります。この設定により、不要なユーザーの誤操作や悪意のあるアクセスを防ぐことができます。

functions.phpへのコード追加

以下の手順に従って、functions.phpファイルに必要なコードを追加します。

アクセス制限の設定

管理者以外のユーザーが管理画面にアクセスしようとした際にエラーメッセージを表示してブロックします。

function restrict_admin_access() {
    if (!current_user_can('manage_options')) {
        wp_die('アクセス権がありません。');
    }
}
add_action('admin_init', 'restrict_admin_access');
functions.php

動作説明
管理者権限がない場合、wp_die()関数で「アクセス権がありません。」と表示し、処理を停止します。current_user_can(‘manage_options’) は、管理者権限を確認する関数です。

非管理者をホームページにリダイレクト

非管理者が管理画面にアクセスした場合、ホームページにリダイレクトさせます。

コード例1: admin-ajax.phpを例外として許可

function redirect_non_admin_users() {
    if (!current_user_can('manage_options') && $_SERVER['PHP_SELF'] != '/wp-admin/admin-ajax.php') {
        wp_redirect(home_url());
        exit;
    }
}
add_action('admin_init', 'redirect_non_admin_users');
functions.php

コード例2: REQUEST_URIでadmin-ajax.phpを許可

function redirect_non_admin_users() {
    if (!current_user_can('manage_options') 
        && strpos($_SERVER['REQUEST_URI'], 'admin-ajax.php') === false) {
        wp_redirect(home_url());
        exit;
    }
}
add_action('admin_init', 'redirect_non_admin_users');
functions.php

動作説明
admin-ajax.phpは例外として許可しています。これは、AJAXリクエストが正常に動作するために必要です。
非管理者をhome_url()にリダイレクトします。

まとめ

WordPressの管理画面へのアクセス制限を設定することで、セキュリティが向上し、管理画面を悪意のあるアクセスや不要な利用から保護できます。
functions.phpに上記のコードを追加するだけで簡単に実現可能です。特に、多人数が関与するサイトや公開されているサイトでの導入を推奨します。

設定前には必ずバックアップを取り、変更後に正常に動作していることを確認してください。これにより、安全で信頼性の高い運用を行うことができます。

コメント

タイトルとURLをコピーしました