2026年8月14日

2026年8月14日

WordPressのユーザー一覧をCSVでエクスポートする方法|WP-CLI・プラグイン・SQL

会員の名簿を作る、別のサービスに移す、集計に使う、といった目的で、WordPress のユーザー一覧を CSV で取り出したいことがあります。ただし WordPress 本体には、ユーザー一覧を CSV で書き出す機能はありません。この記事では、WP-CLI・プラグイン・SQL のそれぞれで CSV を作る方法と、書き出した後の注意点を説明します(2026年10月時点の WordPress と WP-CLI の公式ドキュメントに基づきます)。

WordPress 本体の「エクスポート」では出せない

管理画面の「ツール」→「エクスポート」は、投稿や固定ページなどを WordPress 独自の XML 形式(WXR)で書き出す機能です。投稿者の情報は一部含まれますが、ユーザー一覧の CSV にはなりません。「ツール」→「個人データのエクスポート」は、本人から依頼があったときに1人分のデータを書き出す機能で、一覧の作成には向きません。

一覧を CSV で取り出すには、次のどれかを使います。

方法 向いている場合 必要なもの
WP-CLI の wp user list 基本的な項目だけを手早く出したい SSH と WP-CLI
WP-CLI と PHP スクリプト 姓名やプラグインの項目(ユーザーメタ)も出したい SSH と WP-CLI
プラグイン 管理画面だけで書き出したい プラグインの導入
phpMyAdmin で SQL SSH が使えず、プラグインも入れたくない データベースの管理画面

方法1: WP-CLI の wp user list で書き出す

WP-CLI が使えるなら、次のコマンドで CSV ができます。

wp user list --fields=ID,user_login,user_email,display_name,user_registered,roles --format=csv > users.csv

--fields を省略すると、ID・ログイン名・表示名・メールアドレス・登録日時・権限グループが出力されます。権限グループで絞り込むなら --role を付けます。

# 購読者だけを書き出す
wp user list --role=subscriber --format=csv > subscribers.csv

--fields には、user_url、user_nicename なども指定できます。user_pass(パスワードのハッシュ)も指定できますが、一覧に含める理由はないため出力しないでください。

Excel で開くと文字化けする場合

WP-CLI が出力する CSV は UTF-8 で、先頭に BOM(UTF-8 であることを示す印)が付きません。日本語版の Excel でダブルクリックして開くと、日本語の表示名が文字化けすることがあります。先頭に BOM を付けてから書き出すと、Excel でもそのまま開けます。

# 先頭に BOM を書いてから、CSV を追記する
printf '\357\273\277' > users.csv
wp user list --fields=ID,user_login,user_email,display_name,user_registered,roles --format=csv >> users.csv

BOM を付けずに、Excel の「データ」→「テキストまたは CSV から」で、文字コードに UTF-8 を指定して読み込む方法もあります。

方法2: 姓名などのユーザーメタも含めて書き出す

wp user list で出力できるのは wp_users テーブルの項目と権限などで、姓・名や、プラグインが追加した項目(ユーザーメタ)は出力できません。これらも含めるなら、PHP のスクリプトを書いて wp eval-file で実行します。

<?php
// export-users.php
// 実行: wp eval-file export-users.php > users.csv
$out = fopen( 'php://stdout', 'w' );
fwrite( $out, "\xEF\xBB\xBF" ); // Excel で文字化けしないように BOM を付ける

$columns = array( 'ID', 'user_login', 'user_email', 'display_name', 'last_name', 'first_name', 'roles', 'user_registered' );
fputcsv( $out, $columns, ',', '"', '' );

$per_page = 500;
$paged    = 1;
do {
	$users = get_users( array(
		'number'  => $per_page,
		'paged'   => $paged,
		'orderby' => 'ID',
	) );

	foreach ( $users as $user ) {
		fputcsv( $out, array(
			$user->ID,
			$user->user_login,
			$user->user_email,
			$user->display_name,
			get_user_meta( $user->ID, 'last_name', true ),
			get_user_meta( $user->ID, 'first_name', true ),
			implode( '|', $user->roles ),
			$user->user_registered,
		), ',', '"', '' );
	}
	$paged++;
} while ( count( $users ) === $per_page );

fclose( $out );

プラグインが追加した項目を出したい場合は、$columns に列名を足し、行のほうに get_user_meta( $user->ID, 'メタキー', true ) を追加します。メタキーの名前は wp user meta list <ユーザーID> で確認できます。500人ずつ取り出しているため、ユーザーが多くてもメモリを使いすぎません。

方法3: プラグインで書き出す

SSH が使えない場合は、プラグインを使います。たとえば wordpress.org で配布されている「Import and export users and customers」は、2026年10月時点の配布ページの説明では、「ツール」メニューの中にプラグインの画面が追加され、その中の「Export」タブから、権限グループや登録日で絞り込んでユーザーを CSV に書き出せます。

どの項目が出力されるか、文字コードや区切り文字をどう選べるかはバージョンによって変わるため、少人数のテスト用サイトで書き出して中身を確かめてから使ってください。プラグインを選ぶときは、配布ページで最終更新日と対応している WordPress のバージョンを確認します。書き出しが終わって使う予定がなければ、プラグインは停止・削除しておくと、管理する対象が減ります。

方法4: phpMyAdmin で SQL を実行して書き出す

SSH もプラグインも使えない場合は、サーバー会社の管理画面から phpMyAdmin などのデータベース管理ツールを開き、SQL で取り出します。テーブル名の wp_ は、wp-config.php の $table_prefix の値に置き換えてください。

SELECT
  u.ID,
  u.user_login,
  u.user_email,
  u.display_name,
  u.user_registered,
  MAX(CASE WHEN m.meta_key = 'last_name'  THEN m.meta_value END) AS last_name,
  MAX(CASE WHEN m.meta_key = 'first_name' THEN m.meta_value END) AS first_name
FROM wp_users AS u
LEFT JOIN wp_usermeta AS m
  ON m.user_id = u.ID
 AND m.meta_key IN ('last_name', 'first_name')
GROUP BY u.ID, u.user_login, u.user_email, u.display_name, u.user_registered
ORDER BY u.ID;

phpMyAdmin では、SQL の実行結果の下にある「エクスポート」から、結果を CSV 形式で保存できます。SELECT * FROM wp_users のようにすべての列を出すと、パスワードのハッシュ(user_pass)やパスワード再設定用のキー(user_activation_key)まで含まれるため、必要な列だけを指定します。

SELECT … INTO OUTFILE で CSV を作る方法は、データベースのユーザーに FILE 権限が必要で、書き出せる場所も secure_file_priv の設定で制限されます。共用のレンタルサーバーでは使えないことが多いため、上の方法を使います。

書き出した CSV の扱い

ユーザー一覧には、メールアドレスや氏名などの個人情報が含まれます。

  • 必要な項目だけを出す: 目的に使わない列は書き出しません。パスワードのハッシュは出力しません。
  • サーバーに残さない: サーバー上で作った CSV は、手元にダウンロードした後に削除します。公開フォルダー(WordPress のフォルダーの中など)に置くと、URL を知られた場合に誰でもダウンロードできてしまいます。
  • 受け渡しと保管の方法を決める: メールに添付して送らず、アクセスできる人を限った場所で共有し、使い終わったら削除します。
  • Excel の数式に注意する: ユーザーが自分で入力できる項目(表示名など)が = や + で始まっていると、Excel で開いたときに数式として扱われることがあります。外部から登録できるサイトの一覧は、開く前に内容を確認します。

ダウンロードは、SSH が使えるなら scp などで行います。

# サーバーのホームディレクトリにある users.csv を手元にコピーし、サーバー側は削除する
scp user@example.com:~/users.csv ./
ssh user@example.com 'rm ~/users.csv'

まとめ

  • WordPress 本体の「エクスポート」はユーザー一覧の CSV を作れない
  • WP-CLI が使えるなら wp user list --format=csv が手早い。Excel で開くなら先頭に BOM を付ける
  • 姓名やプラグインの項目も必要なら、get_users() と get_user_meta() を使うスクリプトを wp eval-file で実行する
  • SSH が使えなければ、プラグインか phpMyAdmin の SQL で書き出す。user_pass は出力しない
  • 書き出した CSV は個人情報として扱い、サーバーに残さない

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲