複数の独立した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”プラグインなど
- 導入手順:
- プラグインをインストール・有効化
- 管理画面から同期先URL・APIキーなど設定
- 動作テストし、ユーザー作成や更新時に自動同期されることを確認
コード記述は不要で、即時導入可能な点が魅力ですが、要件を満たせるか事前確認しましょう。
まとめ
本記事で紹介した手法は、それぞれメリット・デメリットや想定する利用ケースが異なります。要件(即時同期・拡張性・メンテナンス性・初期コスト)を考慮し、最適な手法を選択してください。
- すぐに同期したい・DB管理が可能:共通DBテーブル利用
- 柔軟な拡張性と疎結合アーキテクチャ:REST API利用
- 深いWordPress連携とカスタム要件対応:カスタムプラグイン開発
- 即座に導入可能な簡易手段:サードパーティプラグイン使用
これらを参考に、複数のWordPressサイト間で効率的なユーザー同期を実現してみてください。
コメントを残す