2026年5月20日

2026年5月20日

WordPressのユーザーデータをエクスポートする方法(GDPR対応)

はじめに

WordPressはバージョン4.9.6からGDPR(EU一般データ保護規則)対応機能が標準搭載されています。ユーザーからの個人データ開示請求・削除請求に管理画面から対応できます。

管理画面からのデータエクスポート

管理画面 → ツール → 個人データのエクスポート
→ メールアドレスを入力 → リクエストを送信
→ ユーザーに確認メールが送信される
→ ユーザーが確認後、管理者がZIPをダウンロード

WP-CLIでユーザーデータをエクスポート

# ユーザー情報をCSVでエクスポート
wp user list --format=csv --fields=ID,user_login,user_email,user_registered,roles \
  > users_export.csv

# 特定ユーザーの詳細をJSON形式でエクスポート
wp user get admin --format=json

# ユーザーメタデータをエクスポート
wp user meta list {user_id} --format=csv > user_meta_export.csv

プライバシーリクエストをプログラムから作成

// プライバシーリクエストを作成(ユーザーからのリクエストを代理処理)
$request_id = wp_create_user_request(
    'user@example.com',
    'export_personal_data' // または 'remove_personal_data'
);

// リクエストを承認
wp_send_user_request($request_id);

カスタムデータエクスポーターを登録

プラグインや独自テーブルのデータをGDPRエクスポートに含める場合:

// functions.php — カスタムデータをエクスポートに追加
add_filter('wp_privacy_personal_data_exporters', function($exporters) {
    $exporters['my-plugin'] = [
        'exporter_friendly_name' => 'マイプラグインのデータ',
        'callback'               => 'my_plugin_data_exporter',
    ];
    return $exporters;
});

function my_plugin_data_exporter($email_address, $page = 1) {
    $user = get_user_by('email', $email_address);
    if (!$user) {
        return ['data' => [], 'done' => true];
    }

    // カスタムテーブルからデータを取得
    $data = [
        [
            'group_id'    => 'my-plugin-orders',
            'group_label' => '注文履歴',
            'item_id'     => 'order-1',
            'data'        => [
                ['name' => '注文日', 'value' => '2024-01-15'],
                ['name' => '金額',   'value' => '¥3,000'],
            ],
        ],
    ];

    return ['data' => $data, 'done' => true];
}

データ削除エレイザーを登録

// functions.php — カスタムデータ削除を追加
add_filter('wp_privacy_personal_data_erasers', function($erasers) {
    $erasers['my-plugin'] = [
        'eraser_friendly_name' => 'マイプラグインのデータ削除',
        'callback'             => 'my_plugin_data_eraser',
    ];
    return $erasers;
});

function my_plugin_data_eraser($email_address, $page = 1) {
    $user = get_user_by('email', $email_address);
    // カスタムデータを削除
    global $wpdb;
    $wpdb->delete('wp_my_plugin_data', ['user_email' => $email_address]);

    return ['items_removed' => true, 'items_retained' => false, 'messages' => [], 'done' => true];
}

注意事項

  • GDPRエクスポートはユーザーの確認メール承認後にのみダウンロード可能になります
  • エクスポートされるZIPファイルはURLリンクで共有されます — リンクの有効期限に注意してください
  • プライバシーポリシーページを 管理画面 → 設定 → プライバシー から必ず設定してください

まとめ

WordPressの標準GDPR機能は ツール → 個人データのエクスポート から利用できます。カスタムデータを含めるには wp_privacy_personal_data_exporters フィルタで独自のエクスポーター関数を登録してください。

お気軽にご相談ください

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