WordPressのカスタマイズ方法やプラグインレビューを中心に、パソコン/動物/植物のことなどを紹介するホームページです
WP Remote Users Sync, a plug-in that enables synchronization of user information between multiple sites and simultaneous processing of login and logout.

複数のサイト間でユーザー情報の同期、ログインやログアウトの同時処理ができるようになるプラグイン「WP Remote Users Sync」

公開日: バックエンド(管理) ユーザー管理

WordPressで作成・管理している複数のサイトがあって、それぞれのサイトの管理画面を開くのにいちいちログインしないといけなくて面倒だなぁと感じたりすることありませんか?

また、会員制サイトを運営していて、複数のWordPressを使ってジャンル分けなどをして運営していて、会員から「全部のサイトでログイン状態にできないの?」「プロフィールを共通にできないの?」などという意見をもらったことありませんか??

WordPressはマルチサイト機能を使う場合を除き、基本的にスタンドアローン(単独)で動作するサイト管理ツール(CMS)ですから、複数のWordPressをインストールして作られたサイト群は当然それぞれのサイトが独立した状態となり、原則何も共有されません。

今回紹介する【WP Remote Users Sync】は、単独で動作しているWordPress同士のユーザー情報・ユーザーの状態を同期させ、複数のサイトのユーザー情報を共通にすることができる画期的なプラグイン。上記のような会員制サイトの要望や自身で作成している複数サイトの管理にも役立つ便利なプラグインです。

どこかで行ったことが、条件の一致する別のどこかで同様に行われることを「同期」と言います。身近な例としては、Google Chromeブラウザを自宅と会社で使っていて、どちらも同じGoogleアカウントにログインした状態で使っていると、お気に入りなどの情報が共通になる(どこから使っても同じになる)といったことなどが挙げられます。

他にはない機能を持つプラグインですので、最初から便利さばかりを紹介しましたが、原則単独で動くWordPressを同期させるという離れ業をするプラグインですから、設定や使用に際してたくさんの注意すべき事項があります。

本ページは実際にテストした際に気付いた点などを踏まえ、設定や使用に関するコツや注意点を可能な限り紹介し、リスクや不具合の起こる可能性についても十分に理解・認識された上で使用していただくことを目的として作成しています。まずは最後までゆっくりじっくりお読みいただければと思います。

本ページの内容を元に設定などを行って不具合や不都合が発生しても、一切責任は負えませんので、テストサイトで十分にテストをされるなど、導入については自己責任でお願いします(このプラグインに関する質問などは公式ページのフォーラムを利用ください)。
※私は本プラグインの制作者ではありませんので、質問等にお答えすることはできません

【WP Remote Users Sync】プラグインの用途や機能

【WP Remote Users Sync】を使うと、以下の動作を同期(同時に動作・更新)させることができます

  • WordPress標準のプロフィール項目を共通にする
  • ユーザーのパスワードを共通にする
  • ユーザーのログイン状態を共通にする
  • ユーザーのログアウト状態を共通にする
  • カスタムフィールドなどを使ったユーザーの拡張情報を共通にする
  • WordPress標準の権限および権限グループの権限(操作できること)を共通にする
  • プラグインなどで追加した権限および権限グループの権限を共通にする

例えばA、B、Cという3つのサイトで同期の設定を行うと、A、B、Cのどのサイトからログインしても他のサイトもログインした状態になる(サイトごとに再ログインする必要がない)、どこかのサイトで行ったプロフィール情報の変更内容がすべてのサイトへ反映されるといった環境が作れます。

また、どの部分を同期させるのかの設定ができるので、例えばプロフィール情報はそれぞれ違ってもログイン・ログアウトの状態は同期するといった使い方もできます。

同期させるために同一ユーザーかどうかを判別する情報は、ユーザーIDではなくユーザー名ですので、長く別々に運営してきたサイト同士を同期させる場合には注意が必要です。

セキュリティ上の問題は大丈夫??

【WP Remote Users Sync】では、サイト同士を安全に接続させるため、以下の情報による認証をします。

  • 双方のサイトの暗号化キーが一致しているか?
  • 双方のサイトの署名キーが一致しているか?
  • 許可されたサーバーIPアドレスからの通信かどうか?

さらに、一定時間経過すると認証をし直すという形になっていますから、すべてをきちんと設定すれば、かなり厳密な接続環境ができると思われます。

サイトを同期させるときの注意点と事前確認しておくべきこと

上記の機能一覧のように、複数のサイトのプロフィールを共有し、ログインやログアウトも同時に処理できる夢のようなプラグインなのですが、このプラグインには「親サイト」「子サイト」という概念がありませんので、テストした印象として。以下の点に注意した方がよさそうです。

100%完全に同期される保証はない

これは翻訳ファイルを作成していて気付いたことですが、通信のエラー、同期するサイトの認証エラー等で同期が正常にできなかった場合、リトライ(再試行する)という機能はないようです(テストでは不具合が出なかったので未確認ですが、出力されるエラー情報は「失敗」という形で終わっています)。

従って、AとBとで同期させている場合、Aのサイトで更新したものがBへ反映されていないということが発生する可能性がありますし、その状況でBのサイトで何かを更新した際、反映されていなかったBの情報でAの情報が上書きされてしまうという現象が発生するなどの不都合が出る可能性があります。

Aサイトを親、BサイトほかはAサイトのみと同期させる子という関係を持たせるように設定すれば、この更新の不都合はほぼ解消できますが、その際には、Aサイト以外でプロフィールの更新をさせなくする措置やAサイトで更新してもらうように促すコンテンツの配置などが必要となります。

サイト構成についてはじっくり考えて行うことをおすすめします。

ユーザー管理をするプラグインなどは共通のものを使った方がよい

【WP Remote Users Sync】では、WordPress標準のプロフィール項目以外にカスタムフィールドに保存されている情報(一般的には会員制サイト構築用プラグインなどで追加した情報)や、ユーザー権限、ユーザー権限グループも同期できるようになっています。

これらの情報が同期させるサイト同士で相違があると、きちんと情報が同期されない現象が発生しますので、使用する会員制プラグインを共通にして管理を統一し、かつ、追加項目に対するキー(カスタムフィールドのキー)を共通にすることで、不都合が起こりにくくすることができます。

受け渡す情報は同期させるサイトすべてで共通にしておいた方がよい

このプラグインは後に説明する「Outgoing」側項目で何か変更が行われた時に、同期させているサイトへ指示を出し、指示されたサイトは「Incomming」項目に設定されている項目について更新(同期)を行います。

相互で更新する(させる)項目が明確な場合を除いて、「Aサイトで更新したのにBサイトでは更新されない」などといった不都合や不具合を起こさないようにするため、すべてのサイトで「Outgoing」と「Incomming」の項目は双方の同じ場所にチェックを入れるようにしましょう。

3つ以上のサイトを同期させるときは

前項の更新の保証でも触れましたが、A、B、Cという3つのサイトを同期させる場合で、親子関係を持たせないときには、

  • Aのプロフィール情報が変更されたら、BおよびCへ更新の指示を送る(同期させる)
     (AのサイトではBとCへのサイト登録(同期登録)をする)
  • Bのプロフィール情報が変更されたら、AおよびCへ更新の指示を送る(同期させる)
     (BのサイトではAとCへのサイト登録(同期登録)をする)
  • Cのプロフィール情報が変更されたら、AおよびBへ更新の指示を送る(同期させる)
     (CのサイトではAとBへのサイト登録(同期登録)をする)

といった形でA、B、Cからきちんと同期の指示が出るように設定しておかないと、情報の相違が生じますから、よく考えて設定するようにしましょう。

本ページを最後に編集したときの環境・バージョンなど

プラグインは製作者によって日々更新されていくため、この紹介記事が最新バージョンのものであるとは限りません。参考までにこの記事の最終更新日時点におけるテスト環境、プラグインバージョン、プラグイン導入時の留意点などを記載しておきます。

プラグインを使用(試用)したテスト環境

この紹介記事作成にあたって、試用(テスト)を行った環境と当時のプラグインバージョンは以下の通りです

  • テストサーバー:カラフルボックス
  • WordPressのバージョン:5.7
  • PHPのバージョン:7.4.6
  • テーマ:ha-Basic(オリジナルテーマ)
  • プラグインのバージョン:記事更新時のバージョン  1.2.7/最新バージョン 1.2.7

本記事を参考にWordPressサイトへプラグインの導入を検討される方へ

WordPressは古くから無料で配布されているサイト作成ツール(CMS)で、随時改良が加えられており、さまざまなバージョンが存在します。さらにWordPressを動かすためのプログラムであるPHP、サイトのデータを保存しておくためのデータベースについても様々なバージョンがあります。そしてWordPress本体同様にプラグインについてもさまざまなバージョンが存在します。本記事を参考にプラグインの導入をお考えの方は、以下に留意の上でインストールするようにしてください。

  • テスト環境での動作に基づいた紹介記事ですので、すべての環境で正常に動作するかどうかは不明です
    ※本記事の内容についてはページ内に記載しているプラグインバージョンのものになります。現在のバージョンと異なる場合、機能などが異なる場合があります。
    ※また、ページによってはテスト環境、テストしたプラグインバージョン等の表示が本文内にない場合、ページタイトル下にある最終更新日当時の情報となりますので、現在のバージョンでは全く違う機能となっているかも知れません。
  • プラグインに無料版と有料版(Pro版)がある場合、特に記載がなければ無料版の情報のみを紹介しています
  • このページでプラグインを使用する際に必要なショートコードやコードなどは、コピーして使用することができますが、環境によっては記号などが文字化けすることがあります。コピーしたのに動作しない場合は特に「”」「’」などの記号を入力し直してみてください。
  • プラグイン本体の動作不具合や質問などは公式サイトのフォーラムなどで行ってください(ここでは質問にお答えすることはできません)

【WP Remote Users Sync】プラグインの設定画面や表示画面の日本語化と翻訳

【WP Remote Users Sync】プラグインは日本語化が可能な言語ファイルが同梱されていますので、翻訳を行えば日本語での使用が可能ですが、設定項目が少ない上、翻訳対象となっている文字列のうちの大半が反映されないため、英語のままで設定することになります。

設定そのものは下の設定方法を見ながら行っていただければ「え?これだけ?」と思うほど簡単ですし、フロントエンド(閲覧画面上)で表示する文字列は、処理中に表示される「Processing..」以外にないと思われますので、特に英語でも問題はないでしょう。

私自身、翻訳ファイルを途中まで作成したところで反映されないものが多いことに気付きました。ご自身で翻訳ファイルを作成しようとお考えの方は、約2/3が反映されずに終わることを認知した上で作業を行ってください。

【WP Remote Users Sync】プラグインのインストールと設定方法

インストール方法

インストールはプラグインの新規追加でプラグイン名を入力して検索してインストールするか、ページ先頭の画像をクリックして表示されるWordPressのプラグイン公式配布ページがダウンロード後、管理画面からアップロードインストールしてください。

WordPressを使い始めて間もない方(初心者の方)は、より詳細なプラグインのインストール手順や、インストール時に起こる問題などへの対処方法をまとめた【WordPress】プラグインのインストール&追加方法とエラー対処の方法も併せてご覧ください。

基本的な設定方法と使用方法

設定は、管理画面から「設定」→「WP Remote Users Sync」を開いて行います。

サイトの同期を行う大まかな流れは以下の通りです

  • 同期させるサイトすべてにこのプラグインをインストールし有効化
  • Action Encryption KeyとAction Signature Keyの決定と設定をする
  • 同期したサイトに対する動作の設定をする
  • 同期させるサイトの登録と同期させるデータの設定

以下1つ1つ順に紹介していきます。

Action Encryption KeyとAction Signature Keyの設定

Action Encryption KeyとAction Signature Keyは、前者が暗号化鍵、後者が認証鍵という意味なのですが、どちらもパスワードと似たものですので、パスワード生成ツールなどを使って、英数字や記号を含めたものを設定するとよいでしょう。

「Security」タブをクリックして設定します

複数のサイト間でユーザー情報の同期、ログインやログアウトの同時処理ができるようになるプラグイン「WP Remote Users Sync」の画像|Knowledge Base

このプラグインが、ユーザー情報の変更を検知して、同期させるサイトへ変更リクエストを行った際に、この2つのキーが一致しないとエラーが出ますから、必ず同じものを全部のサイトへ設定するようにしましょう。

Action Encryption KeyとAction Signature Keyはセキュリティの要となりますので、できるだけ長いものを設定するようにしましょう(文字数の制限はないようです。テストでは50文字のキーを使用しましたが、正しく動作しました)

また、2つのキーとは別に、接続を許可するサーバーのIPアドレスを設定しておくことで、たとえキーがバレてしまっても、容易に接続できないようにすることができます(画面右側の「IP Whitelist」欄へサイトのグローバルIPアドレスごとに1行で記述します)。

サイトのグローバルIPアドレスは、ドメイン/IPアドレス サーチ 【whois情報検索】などを使って調べるか、プラグインの解説にあるように、サイト同士を同期させた後でテスト的にプロフィール情報を更新し、プラグイン設定画面のログからIPアドレスを調べる方法もあります。

サイトへログインした際の動作設定

「Miscellaneous」タブをクリックして設定します

同期されたサイト中のどこかのサイトからログインした時の動作設定です(専門用語を省いて簡易的に紹介します)

「Force Login Redirects & Logout Everywhere」を選択すると、すべてのサイトへ強制的にログイン(またはログアウト)されるまで、処理を継続します。多数のサイトを同期している場合にはログイン(ログアウト)完了までに時間がかかることがあります。処理の間、画面上には「Processing..」と表示されます。

「Force Disable Login Redirects & Logout Everywhere」を選択すると、サイトの状態などにより、ログイン(ログアウト)を試みて瞬時に成功/失敗を判断し、成功した場合のみログイン(ログアウト)させます。処理は速いですが、同期性は低下します。処理の間、画面上には「Processing..」と表示されます。

「Use Silent Redirection」は上の2つの処理方法に対して、処理の間の画面表示を行わないようにするオプションです。スムーズにログイン(ログアウト)できる環境ではいいですが、時間がかかっていることがユーザーへ伝わらないので、何をしているのか?と戸惑うユーザーが出るかも知れません。

ユーザー情報が更新された時に同期する項目の設定

「Remote Sites」タブをクリックして設定します

まず、画面右側にある「Add Remote Site」へ、同期させるサイトのURLを入力し、「Add」ボタンをクリックします

以下の画面が表示されるので、1つ1つ設定していきます。

複数のサイト間でユーザー情報の同期、ログインやログアウトの同時処理ができるようになるプラグイン「WP Remote Users Sync」の画像|Knowledge Base

画面左の「Outgoing Actions」は、今設定しているサイト上で下の一覧でチェックを入れた項目に対して操作があったとき、画面右の「Incoming Actions」は今設定しているサイト以外の同期サイトで下の一覧にチェックのある項目に対して操作があったときの動作設定になります。

以下の操作があったときに「他の同期サイトへ送信」または「他の同期サイトから受信」して自動でデータを更新(同期)します。

  • 「Login」・・・ログインしたとき
  • 「Logout」・・・ログアウトしたとき
  • 「Create」・・・ユーザー登録があったとき
  • 「Update」・・・WordPress標準の登録情報が変更されたとき
  • 「Delete」・・・ユーザーが削除されたとき
  • 「Password」・・・パスワードの変更があったとき
  • 「Roles」・・・ユーザー権限の変更があったとき
  • 「Metadata」・・・メタデータ(カスタムフィールド)の値が変更されたとき

※特別な動作をさせるときを除き「Outgoing Actions」と「Incoming Actions」は同じ項目にチェックを入れ、かつ、すべての同期サイトで同一にしておきます。

チェック欄の下にあるのは「メタデータ(カスタムフィールド)」の更新があったときに、どのメタデータを同期するのかの設定と、「ユーザー権限」の変更があったときにどの権限に変更があったら同期するのかの設定になります。

  • 「Outgoing Actions」側のメタデータ・権限については、空欄にすると何も送信されない設定になりますから、カスタムフィールドがある場合には必ず設定します。
  • 「Incoming Actions」側のメタデータ・権限については、空欄にするとすべての項目の変更を受け入れる設定になります

また、「Merge with existing roles」にチェックを入れることで、現在存在する権限(権限グループ)の整合性をチェックして同期させる処理をします。

「Outgoing Actions」「Incoming Actions」の各項目にある「test」ボタンを使って少なくとも1つの項目に対して接続テストを行ってください。テストに失敗する場合には何かの設定が間違っている可能性があり、そのまま保存するとサイトへアクセスできなくなることがあります。
 ・・このように書きましたが、この点が私にとって一番懸念事項となっていて、私が行ったテストでは、新規にサイトを追加した後で、一度保存しないとテストに必ず失敗するようになっていました。そうした場合には思い切って保存してみるしかないのですが、上記の不具合が発生した場合、プラグインの強制停止で復旧はするものの、有効化したとたんにデータベースに保存されている設定情報が復活し、再び不具合となります。すべて一旦解消する方法としてはデータベースの該当データを削除するしかないのですが、知識がない場合にはとても危険な行為ですので、自信がなければプラグインの使用自体をあきらめた方が無難かと思います。

同じユーザー名のユーザーがいる場合の初期アクションはどうなるの?

同期させたサイト上に同じユーザー名のユーザーが存在する場合、どのユーザー情報が採用されるのか??気になるところですよね?

このプラグインは、設定画面で設定した同期を行う項目について、同期させているどこかのサイトで変更が起こったときに他のサイトへ反映させるというもので、親子関係を持たないプラグインですから、テストした感じでは

最初に変更した(何か変更して「更新」をクリックした)サイトの情報が、同期しているすべてのサイトへ反映されるようです。

あくまでもテストでの印象であり、起こり得るケースすべてをチェックできているわけではありませんので、テストサイトなどを作って十分にテストを行われることを強くおすすめします。

【WP Remote Users Sync】プラグインを使用する上での注意事項

ここまで読むと「なんてすごいプラグインなんだ」と感動してしまうほど秀逸なプラグインなのですが、テスト段階でいくつかの条件や制約、できないことがありましたので紹介しておきます。

パーマリンク構造が「基本」のサイトでは同期できない

同期元、同期先のサイトとも、パーマリンク構造が「基本」となっている場合には、どのように設定してもエラーが出て接続できません。もちろん、パーマリンク構造を「数字ベース」や「投稿名」など、「基本」以外のものへ変更すれば同期できるようになりますが、以下の点に注意してください。

  • パーマリンク構造を変えることで、投稿のURLは、当然ながら変更になります。検索エンジンなどへ既に登録のある(インデックス済)の場合、評価に変動が起きる可能性があります
  • パーマリンク構造の変更により、環境によっては旧URLへのアクセスに対して新URLへリダイレクトされない場合があり、すべて404エラーとなってしまうことがあります
    ※一度変更すると元に戻しても元の構造へ変更されない場合もあるようですので慎重に判断してください

以上の点を確認および納得した上でパーマリンク構造の変更を行い、本プラグインが使用できる状態にしてください。

同期させるサイトの数によって、パフォーマンス低下が起こる可能性がある

冒頭で紹介した通り、ユーザーのプロフィール情報の同期、ログイン・ログアウト処理の同期を行うプラグインです。

ログイン・ログアウトの同期をするように設定されているサイト同士では、どれかのサイトでログインすればすべてのサイトでログインし、ログアウトはその逆の処理をします。

従って、同期処理させるサイトが増えれば増えるほど、ログイン/ログアウト完了までに時間がかかるようになります(テストでは同一サーバー上のサイトを2つ同期させた状態でログインに2~3秒かかりました)。

また、ユーザー数の多いサイトになればなるほど、ログイン/ログアウトの処理が煩雑になりますから処理時間の遅延が起こる可能性が高くなることにも留意する必要があります。

このプラグインを使う機会としては恐らく会員制サイトがほとんどでしょうから、ユーザーが戸惑うことがないかどうかもチェックするようにしましょう。

ユーザー削除の際の動作をきちんと確認する必要がある

公式ページのフォーラムにある「ユーザーを削除する際の重大な欠陥」で出ている事項です。

単独のWordPressサイトの場合、ユーザーを削除する際にはそのユーザーの投稿をどのようにするか(他の作者に割り当てるのか?削除するのか?等)を判断する画面が表示されます。

しかし、このプラグインでは、削除するユーザーが削除を行うサイト自体にある投稿についてはこのチェックが働く(WordPress標準のアクションが起こる)のですが、リモート先のサイトでは必ずしも同じユーザーが存在するわけではないので、再割り当てができず、原則削除という形になります。

これを回避する方法も上記のフォーラム上でプラグイン作者が例示していますので、十分にテストや対策を検討した上で使用されることをおすすめします。

個人的には、ユーザー削除後にユーザーが行った投稿やコメントを残すかどうかの判断が個別に必要なのではないかと思うので、ユーザーがユーザー自身で削除する機能を提供しないようにし、かつ、このプラグインの削除アクションが同期されないようにした上で、問い合わせフォームなどを使って削除リクエストを受け付けて、管理者が目で見て削除という形が一番かと思います。

このページの更新履歴

更新日更新内容
2021年 3月14日複数のサイト間でユーザー情報の同期、ログインやログアウトの同時処理ができるようになるプラグイン「WP Remote Users Sync」を公開しました

WordPressのカスタマイズ・不具合対応などご相談ください

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。