複数のWordPress間でユーザー情報を同期する方法

複数の独立したWordPressインスタンス間でユーザー情報を同期する手段はいくつか存在します。本記事では、代表的な4つの手法(共通DB利用、REST API、カスタムプラグイン、サードパーティプラグイン活用)を取り上げ、それぞれのメリット・デメリット・実装例を比較表とサンプルコードで紹介します。

手法一覧比較表

手法メリットデメリット実装例概要
共通ユーザーデータベース利用* 全サイトで即時同期が可能
* データが一元管理でき整合性確保
* サイト別権限・メタ情報の管理が複雑
* DB設定やテーブル構造の調整必要
wp-config.php修正例あり
REST APIを用いた同期スクリプト* 疎結合なアーキテクチャ
* イベントドリブンで拡張性高い
* セキュリティ制御が柔軟
* API実装や認証がやや複雑
* 実装・保守コスト増
簡易PHPスクリプト例あり
カスタムプラグイン開発* WPフック・フィルターを活用し深く統合可能
* 任意ロジック実装可能
* 専門的知識が必要
* 保守・拡張コストは自前対応
シンプルプラグインサンプルコードあり
サードパーティプラグイン利用* 導入が容易
* 初期実装・維持コストが低い
* 機能制約や柔軟性不足の場合あり
* 外部プラグイン依存度が上昇
導入手順説明のみ(コードは省略)

各手法の簡易サンプル実装

以下はあくまで概念的な例です。実稼働環境では、サイト固有の要件に合わせて設定・コードを調整してください。

1. 共通ユーザーデータベーステーブル利用(wp-config.php編集例)

  • ファイル名例: wp-config.php
  • 配置場所: 各WordPressインストールルートディレクトリ
  • 概要: 複数サイトが共通のユーザーテーブル(shared_users / shared_usermeta)を参照するよう設定。
phpコードをコピーする/** 共通ユーザーテーブルの指定 */
define('CUSTOM_USER_TABLE', 'shared_users');
define('CUSTOM_USER_META_TABLE', 'shared_usermeta');

/** 共通DB接続設定例 */
define('DB_NAME', 'my_shared_db');
define('DB_USER', 'myuser');
define('DB_PASSWORD', 'mypassword');
define('DB_HOST', 'localhost');

/** 以下、通常のwp-config設定続行 */

2. REST APIを用いた同期用PHPスクリプト例

  • ファイル名例: user-sync-script.php
  • 配置場所: サーバー任意ディレクトリ(cron等で実行)
  • 概要: 新規ユーザー情報を別サイトのREST APIへPOSTし同期
phpコードをコピーする<?php
// 同期先URLと認証トークン
$remote_url = "https://example.com/wp-json/wp/v2/users";
$auth_token = "YOUR_JWT_OR_BEARER_TOKEN";

// 例: 新規登録ユーザー情報
$data = array(
  'username' => 'newuser',
  'email'    => '[email protected]',
  'password' => 'password123'
);

$args = array(
  'method'  => 'POST',
  'headers' => array(
    'Authorization' => 'Bearer ' . $auth_token,
    'Content-Type'  => 'application/json',
  ),
  'body'    => json_encode($data),
);

$response = wp_remote_request($remote_url, $args);

if (is_wp_error($response)) {
  // エラーハンドリング
} else {
  // 成功時処理(ログ出力など)
}

※実際にはwp-load.php読込やCURL利用など、環境に応じた拡張が必要。

3. カスタムプラグインによる同期実装例

  • ファイル名例: wp-content/plugins/user-sync/user-sync.php
  • コミットメッセージ例: Add user synchronization plugin for multiple WordPress sites
  • 概要: user_registerフックで新規ユーザー登録時に他サイトへ同期リクエストを送信
phpコードをコピーする<?php
/*
Plugin Name: User Sync Plugin
Description: 新規ユーザー登録時に他サイトへ同期するプラグイン
Version: 1.0
Author: Your Name
*/

// 新規ユーザー登録時のフック
add_action('user_register', 'sync_user_to_remote', 10, 1);

function sync_user_to_remote($user_id) {
    $user_info  = get_userdata($user_id);
    $remote_url = "https://example.com/wp-json/custom-endpoint/sync-user";
    $auth_token = "YOUR_JWT_OR_BEARER_TOKEN";

    $data = array(
        'username' => $user_info->user_login,
        'email'    => $user_info->user_email
    );

    $args = array(
        'method'  => 'POST',
        'headers' => array(
            'Authorization' => 'Bearer ' . $auth_token,
            'Content-Type'  => 'application/json',
        ),
        'body'    => json_encode($data),
    );

    $response = wp_remote_request($remote_url, $args);

    if (is_wp_error($response)) {
        // エラーログ出力など
    } else {
        // 成功時処理
    }
}

4. サードパーティプラグインの活用

  • : “WP Remote Users Sync”プラグインなど
  • 導入手順:
    1. プラグインをインストール・有効化
    2. 管理画面から同期先URL・APIキーなど設定
    3. 動作テストし、ユーザー作成や更新時に自動同期されることを確認

コード記述は不要で、即時導入可能な点が魅力ですが、要件を満たせるか事前確認しましょう。

まとめ

本記事で紹介した手法は、それぞれメリット・デメリットや想定する利用ケースが異なります。要件(即時同期・拡張性・メンテナンス性・初期コスト)を考慮し、最適な手法を選択してください。

  • すぐに同期したい・DB管理が可能:共通DBテーブル利用
  • 柔軟な拡張性と疎結合アーキテクチャ:REST API利用
  • 深いWordPress連携とカスタム要件対応:カスタムプラグイン開発
  • 即座に導入可能な簡易手段:サードパーティプラグイン使用

これらを参考に、複数のWordPressサイト間で効率的なユーザー同期を実現してみてください。

この記事にご意見をお待ちしております

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です