2026年9月20日
2026年9月20日
WP-CLIのuserコマンドの使い方|ユーザーの一覧・作成・権限変更・削除を安全に行う
WP-CLI の wp user コマンドを使うと、管理画面を開かずにユーザーの一覧表示、作成、権限グループの変更、ログインセッションの破棄、削除までをターミナルから行えます。この記事では、よく使うサブコマンドを用途別に紹介し、パスワードの扱いや削除時の投稿の引き継ぎなど、事故につながりやすい点もあわせて説明します。
実行する前の準備
wp user はデータベースのユーザー情報を直接変更します。一括で変更・削除する前には、データベースのバックアップを取っておきます。
wp db export ~/backup-$(date +%Y%m%d).sql
バックアップファイルはドキュメントルートの外に置いてください。公開ディレクトリに置くと、Web から取得されるおそれがあります。
WP-CLI は、WordPress のファイルを所有しているユーザーで実行するのが基本です。root で実行しようとすると WP-CLI は警告して止まります。--allow-root で回避できますが、プラグインのコードが root 権限で動くことになるため避け、次のように Web サーバーのユーザーで実行します。
sudo -u www-data wp user list --path=/var/www/html
ユーザー名(www-data など)とパスはサーバーによって異なります。以降の例では --path を省略します。
ユーザーを一覧・確認する
もっとも使う機会が多いのが wp user list です。権限グループで絞り込み、必要な列だけを表示できます。
# 管理者だけを表示
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
# 管理者の人数だけを数える
wp user list --role=administrator --format=count
# CSV で書き出す
wp user list --fields=ID,user_login,user_email,roles --format=csv > users.csv
管理者の一覧を定期的に確認すると、身に覚えのないアカウントが追加されていないかを早く見つけられます。書き出した CSV にはメールアドレスなどの個人データが含まれるため、作業後は削除するか、アクセスできる人を限った場所に保管してください。
特定のユーザーの詳細は wp user get で確認します。ID、ログイン名、メールアドレスのどれでも指定できます。
wp user get 12 --fields=ID,user_login,display_name,user_email,roles
ユーザーを作成する
基本の形は wp user create <ログイン名> <メールアドレス> です。
wp user create hanako hanako@example.com --role=editor --display_name="山田花子" --send-email
ここでパスワードの扱いに注意が必要です。
--user_pass=...でパスワードを指定すると、シェルの履歴やプロセス一覧に平文で残ります。- 代わりに WP-CLI のグローバル引数
--prompt=user_passを付けると、パスワードを対話的に入力でき、コマンドラインに残りません。 - パスワードを指定しないと WP-CLI がランダムなパスワードを生成し、画面に表示します。この出力をチケットやチャット、ログに貼らないでください。
本人に自分でパスワードを決めてもらうのがもっとも安全です。--send-email を付けると新規ユーザー向けの通知メールが送られるので、そこからパスワードを設定してもらう運用にすると、作業者がパスワードを知らずに済みます。メールが届くかどうかは、サイトのメール送信の設定によります。
--role を省略すると、「設定」→「一般」で指定した新規ユーザーのデフォルト権限グループになります。管理者権限は必要な人だけに付けてください。
ユーザー情報を更新する
wp user update で表示名やメールアドレスなどを変更できます。
wp user update 12 --display_name="山田 花子"
wp user update 12 --user_email=hanako.new@example.com
メールアドレスやパスワードを変更すると、WordPress の通知メールが送られます。移行作業などで通知を止めたい場合は --skip-email を付けます。ただし、本人の知らないうちに変更が行われることになるため、乗っ取りを本人が気付く手段を一つ減らす点は理解しておきます。
パスワードを忘れたユーザーへの対応には wp user reset-password が使えます。指定したユーザーのパスワードをランダムな値に変更します。そのうえで、本人にはログイン画面の「パスワードをお忘れですか?」から再設定してもらう流れにすると、新しいパスワードを作業者が扱わずに済みます。
権限グループと権限を変更する
権限グループの変更には3つのサブコマンドがあります。
# 権限グループを置き換える(既存のものは外れる)
wp user set-role 12 author
# 権限グループを追加する
wp user add-role 12 editor
# 権限グループを外す
wp user remove-role 12 editor
set-role は既存の権限グループを置き換え、add-role は追加します。プラグインが独自の権限グループを付けている場合、set-role でそれが外れることがあるので、変更前に wp user get で現在の状態を記録しておきます。
個別の権限(capability)を付け外しすることもできます。
wp user list-caps 12
wp user add-cap 12 edit_others_posts
wp user remove-cap 12 edit_others_posts
ユーザー単位で権限を足すと、後から「なぜこの人だけ操作できるのか」が分かりにくくなります。複数人に同じ権限が必要なら、権限グループ側で調整するほうが管理しやすくなります。
ユーザーメタとログインセッション
ユーザーに紐づく追加情報(ユーザーメタ)は wp user meta で扱います。
wp user meta list 12
wp user meta get 12 nickname
wp user meta update 12 nickname "はなこ"
meta list の出力には、プラグインが保存した設定やトークン類が含まれることがあります。画面共有中に表示したり、出力を保存したりしないよう注意してください。
不正ログインが疑われるときや、退職者のアカウントを止めるときは、ログインセッションを破棄して強制ログアウトさせます。
wp user session list 12
wp user session destroy 12 --all
セッションの破棄だけでは、パスワードを知っている人は再びログインできます。パスワードのリセットや権限グループの変更と組み合わせて行ってください。
ユーザーを削除する
削除は元に戻せないため、もっとも慎重に行う操作です。
wp user delete 12 --reassign=1
--reassign で指定したユーザーに、削除するユーザーの投稿が引き継がれます。これを付けずに実行すると、WP-CLI は「関連する投稿も削除される」旨の確認を出します。ここで同意すると、そのユーザーの投稿も削除されます。スクリプトで --yes を付けて確認を飛ばす場合は特に注意してください。
マルチサイトでは、サイトから外すのかネットワーク全体から削除するのかで指定が変わります(--network オプション)。実行前に wp help user delete で、使っているバージョンのオプションを確認します。
すぐに削除せず、権限グループを外してセッションを破棄し、一定期間後に削除する運用にすると、誤って必要なアカウントを消す事故を防げます。
一括処理とテスト用ユーザー
CSV から複数のユーザーを登録する wp user import-csv や、テスト用のユーザーを大量に作る wp user generate もあります。generate は本番ではなく、ステージングや開発環境でだけ使ってください。
各サブコマンドのオプションは WP-CLI のバージョンで追加・変更されることがあります(2026年10月現在)。使う前に wp help user と wp help user <サブコマンド> で、手元の環境のヘルプを確認するのが確かです。
まとめ
- 実行前に
wp db exportでバックアップを取り、root ではなくファイル所有者のユーザーで実行する wp user list --role=administratorで管理者を定期的に確認する- パスワードはコマンドラインに書かず、
--prompt=user_passや本人による再設定を使う set-roleは置き換え、add-roleは追加。変更前に現在の状態を記録する- 削除は
--reassignで投稿を引き継ぐ。付け忘れると投稿も消える