2026年5月20日
2026年5月20日
WordPress のユーザー登録を無効にする方法|設定・WP-CLI・強制する方法と確認
WordPress のユーザー登録を無効にするには、管理画面の 設定 → 一般 にある「メンバーシップ」の 「だれでもユーザー登録ができるようにする」のチェックを外して保存します。これで wp-login.php?action=register の登録画面は使えなくなり、開こうとすると wp-login.php?registration=disabled に転送されます。
新しくインストールした WordPress では、このチェックは最初から外れています。スパムの登録が来ている場合は、どこかでオンにされたか、プラグインが独自の登録フォームを持っているかのどちらかです。この記事では、設定の変え方、WP-CLI での確認、設定を固定する方法、あわせて確認したい項目を説明します。
方法 1: 管理画面で無効にする
- 管理者でログインし、設定 → 一般 を開きます。
- 「メンバーシップ」の「だれでもユーザー登録ができるようにする」のチェックを外します。
- 画面下の 変更を保存 を押します。
同じ画面の「新規ユーザーのデフォルト権限グループ」は、登録したユーザーに付く権限です。登録を無効にしても、この値は 購読者 にしておきます(理由は後の節で説明します)。
保存したら、ログアウトした状態(またはブラウザーのプライベートウィンドウ)で https://example.com/wp-login.php?action=register を開きます。ログイン画面に転送され、「ユーザー登録は現在受け付けていません。」のような案内が出れば無効になっています。
方法 2: WP-CLI で確認・変更する
設定は users_can_register というオプションに保存されています。1 が登録可、0 が登録不可です。
# 現在の値を確認
wp option get users_can_register
# 登録を無効にする
wp option update users_can_register 0
# 新規ユーザーの既定の権限グループを確認・購読者にする
wp option get default_role
wp option update default_role subscriber
複数のサイトをまとめて確認するときや、管理画面に入れないときに使えます。
方法 3: 設定を固定する(管理画面で戻されないようにする)
管理者が複数いるサイトや、過去に設定を書き換えられたことがあるサイトでは、コードで値を固定しておくと、管理画面でチェックを入れても登録は有効になりません。テーマを変えても効くように、wp-content/mu-plugins/ に PHP ファイルを置きます(フォルダーが無ければ作ります)。
wp-content/mu-plugins/disable-registration.php:
<?php
/**
* Plugin Name: ユーザー登録を無効に固定
*/
// users_can_register を常に 0 として扱う
add_filter( 'pre_option_users_can_register', '__return_zero' );
// 既定の権限グループを常に購読者として扱う
add_filter( 'pre_option_default_role', function () {
return 'subscriber';
} );
pre_option_{オプション名} フィルターは、データベースの値を読む前に返す値を決めるものです。データベースの値は変わらないので、このファイルを消せば元の設定に戻ります。mu-plugins に置いたファイルは自動で読み込まれ、管理画面のプラグイン一覧から停止できません。
なお、wp-config.php には登録を止める定数はありません。DISALLOW_FILE_MODS などはファイルの編集やプラグインの追加を禁止する定数で、ユーザー登録とは関係がありません。
マルチサイトの場合
マルチサイトでは、登録の設定はネットワーク全体で決まります。ネットワーク管理 → 設定 の新規登録の項目(英語の画面では Allow new registrations)で、登録を無効にする選択肢(英語の画面では Registration is disabled)を選んで保存します。個々のサイトの 設定 → 一般 にはこの項目は表示されません。
登録を無効にしても確認したいこと
既定の権限グループが「購読者」か
攻撃者が何らかの方法で設定を書き換え、登録を有効にしたうえで「新規ユーザーのデフォルト権限グループ」を 管理者 にする手口があります。登録を無効にしても、default_role が subscriber 以外になっていたら、改ざんを疑って管理者アカウントや最近追加されたプラグインを確認します。
REST API からは登録できない
WordPress 本体の REST API(/wp-json/wp/v2/users)でユーザーを作るには、ユーザーを作成する権限(create_users)が必要です。ログインしていない訪問者が REST API で登録することはできないため、REST API のためだけに別の対策を入れる必要はありません。
プラグイン独自の登録フォーム
「だれでもユーザー登録ができるようにする」は、WordPress 本体の登録画面の設定です。次のようなプラグインは独自の登録フォームと設定を持つことがあるため、それぞれの設定も確認します。
- WooCommerce: 設定の「アカウントとプライバシー」(Accounts & Privacy)で、購入手続きや「マイアカウント」ページでアカウントを作れるかどうかを決めます。
- 会員サイト・フォーム系のプラグイン: 登録用のフォームやショートコードを置いているページが公開されたままになっていないかを確認します。
どのプラグインがユーザーを作っているか分からない場合は、最近登録されたユーザーの登録日時と、アクセスログでその時刻に POST されている URL を照らし合わせると見当がつきます。
すでに登録されたスパムのユーザー
無効にする前に登録されたユーザーは残ります。最近の登録を一覧にして確認します。
wp user list --role=subscriber --fields=ID,user_login,user_email,user_registered --orderby=registered --order=DESC
削除する前にデータベースのバックアップを取り、本物の会員や注文履歴のある顧客が混ざっていないかを確かめてから、管理画面の ユーザー で削除します。
登録を残したまま通知メールだけ止める
登録は受け付けるが、新規登録のたびに管理者へ届くメールを止めたい、という場合は、WordPress 6.1 で追加されたフィルターを使います。
<?php
// 新規ユーザー登録の通知を管理者に送らない
add_filter( 'wp_send_new_user_notification_to_admin', '__return_false' );
// 登録したユーザー本人への通知(パスワード設定用のリンク)も止める場合
// 本人がパスワードを設定できなくなるため、通常は止めない
// add_filter( 'wp_send_new_user_notification_to_user', '__return_false' );
本人への通知には、パスワードを設定するためのリンクが入っています。これを止めると登録したユーザーがログインできなくなるため、通常は管理者への通知だけを止めます。
まとめ
- ユーザー登録は 設定 → 一般 の「だれでもユーザー登録ができるようにする」を外せば無効になり、登録画面は
registration=disabledに転送されます。 - WP-CLI では
wp option update users_can_register 0で同じことができます。 - 管理画面で戻されないようにするには、mu-plugin で
pre_option_users_can_registerを使って固定します。wp-config.phpに専用の定数はありません。 - 既定の権限グループは購読者のままにし、WooCommerce などプラグイン独自の登録フォームの設定も確認します。
関連記事
参考: 設定 → 一般(WordPress.org ドキュメント)、wp_new_user_notification()(WordPress Developer Resources)