[WordPress] メンバーシップ・サイトを構築プラグイン – Ultimate Member プラグインの使い方をAMP対応とともに解説 – [2021/03/07]

ID14027

はじめに

当サイトは、試験的及び備忘記録として記録した内容は非表示にするために、Ultimate Memberプラグインを試験的に導入しています。

よろしければ、「いたずら」してみて下さい。使い勝手などがわかると思います。どれだけの堅牢性(ロバストネス)があるか知りたいと思っているので、ぜひどうぞ。「ユーザー」> 「新規登録」です.

ロバストネスの確認、及び対策の強化には、以下の2つのプラグインを導入しています。これは、SiteGuard WPは、定番のようなので、極力導入してはいかがでしょうか。

  • Statify
    • どのページがよくアクセスされているか知ることができます
    • この機能を使って、ユーザー登録ページがどれくらいアクセスされたかわかります
    • アクセスされているにもかかわらず、登録実績がなければ、登録の意図はないと判断できます
    • 因みに、Google Analyticsで調べればサイトのアクセス状況はわかると思っていましたが、ユーザーログイン画面など、no-indexにしているものは統計に含まれないので、、Statifyを導入するまで、これらのアクセス状況を知ることができていませんでした。これは、リスキーな状況です
  • SiteGuard WP Plugin
    • Statifyが集積した情報から、ユーザーログイン画面のアクセス数が数百と非常に多かった時期がありました。フロントページにユーザーログイン画面のリンクを貼っているので、そこにハッキングを仕掛けていることが考えられました。
    • そこで、SiteGuard WP Pluginの設定で、「防御」を施しています。
    • また、予備的に登録したものの、自分に届かないメールアドレスを指定した(と考えられる)ため、確認メールが届かず、そこに記載のリンクをクリックして最終的な登録まで行っていない(と考えられる)ため、そのような仮登録者によるユーザーログイン画面でのログインの試行(この状態でログインできない)こともカウントされています

使い勝手は? とヒヤカシ

よく海外からの「ヒヤカシ」があります。ユーザー登録はしていただけるのですが、その登録したe-mailに対して、自動で送られてくるリンク付きのe-mailの処理をしてくれません。

そのリンクをクリックすれば、登録したe-mailは実在すると判断できるし、且つロボットではないことを、おおよそ判断できるので、登録が完了するという仕組みです。

ご自身により登録した後に、登録の削除もできます。

WordPressのユーザー管理画面を見れば、メール一覧から、ステータスが確認できます。もしも、登録しようとしたユーザーが、自動で送られてくるUltimate Memberプラグインからの確認メール、すなわち、そこに記載のリンクをクリックしていない限り、「メールアドレスの確認待ち中」と表示されています。メールの確認が完了すれば、WordPressのユーザーの管理画面には、そのユーザーは「承認済み」と表示されます。以上、これらの挙動は、Ultimate Member -> 設定 -> Emailから設定します。

Ultimate Memberと専用のreCAPTCHAの説明

Ultimate Memberは、AMPページでは、エラー/ワーニングが出てしまいます。念のため、Ultimate Memberを機能させたい投稿/ページは、AMPを適用せず、更に、AMPプラグインの設定で、機能を無効化に設定しています。

Ultimate Member

大まかな機能

Ultimate Memberプラグインは、登録したユーザーに「権限グループ」を設定し、権限グループ毎に、表示/非表示の区分について投稿全体や投稿内のブロック毎(Gutenberg使用の場合)に制限をかけ、ユーザー毎にサービスを差別化するプラグインです。

ユーザー登録して、そのユーザーの設定として例えば「Family」としたとします。次に投稿のブロックまたは、投稿全体に対して、制限(Restrict)のスライドボタンで設定して、Familyを指定すれば、Family設定のユーザーにしか見れないブロックまたは投稿を作成できます。これにより、クローズドなメンバーシップが可能です。

専用のreCAPTCHAの注意点)

Ultimate Member – reCAPTCHAは、WordPress標準のログイン画面に上書きできない、又は、標準ログイン画面を無効化できないため、以下の事例のようにコンフリクトを起こします。

対策の概要

WordPressの標準ログイン画面を使用せず,Ultimate Memberのログインに集約します.且つ,reCAPTCHAも専用のUltimate Member – reCAPTCHを使用することで,セキュリティを保ちます.

このコンフリクト(エラー)は、2020/02現在で調べた限り、2017年から報告されています。

以下、対策方法も記載しているので、Ultimate memberを使う場合、合わせて設定して下さい。

reCAPTHC同士のコンフリクトと対策

  • 「Ultimate Member – reCAPTCHA」は、WordPress標準ログイン画面には適用されないため,標準ログイン画面用に,別のrecaptchaを導入すると、コンフリクトが生じてUltimate MemberでのreCAPTCHが,エラーしてログインできなくなる
    • Ultimate Member専用である
    • WordPress標準のログイン画面に適用されない
    • 複数のreCAPTCHAプラグインの併用はコンフリクトする
  • 対応策 (標準ログイン画面を無効化して対応する)
    • wp-login.phpの削除
      WordPress標準ログイン画面である「wp-login.php」をバックアップを取ってから削除(または、ファイル名の変更:この場合不正アクセス者から類推されないことに注意)し,Ultimate Memberのログイン画面のみの運用とする。
      • 注意) WordPressのアップデート後には、「wp-login.php」が復活します。その対策は、以下に示したように、Redirectプラグインを使います。
      • 説明)「wp-login.php」は、不正アクセスのターゲットになります。ファイル名称を変えるようなプラグインもあるくらいなので,ファイル名変更の対応策も効果があると考えています。
    • URLの無効化
      Redirectプラグインを使って、標準ログイン画面をUltimate Memberのログイン画面にリダイレクトする

標準ログイン画面が必要となった場合

UMのlogin画面ではログインできなくなる

AMP pluginを使用しいて、且つ、ultimate memberのloginページをAMPに適用している場合に、ultimate memberのlogin画面からログインした時、エラーが出て、ログインができない状態に陥ることがあります。AMPページの内容が古かったり、その他の理由があるようです。これを復旧するには、ultimate memberのloginページを、編集画面から更新する必要があります。その際、「AMPの有効化」が有効になっているはずなので、外しておけば、今後の対策になります。

WordPress標準のlogin画面の復旧

以上の作業を行うには、先ずは、WordPressにログインしないといけませんが、WordPress標準のlogin画面を有効(復旧)にする必要です。WordPressのシステムファイルが置かれている「システム」に入って(または、WebDAVなどのファイルの名前が変えられるツールでも良い)、以下のように復旧させます。

  • wp-login.phpを復旧させます。
  • Synology NASにWordPressを載せているので、DSMに Loginします。
  • バックアップを取っている場合は、wp-login.phpを復元,ファイル名を変えている場合は、もとのファイル名に戻します
  • WordPressのwp-content -> pluginsフォルダにある以下のフォルダに「.bak」を末尾に付けてrenameします。
    • redirection -> redirect.bak
    • ultimate-member -> ultimate-member.bak
    • um-recaptcha -> um-recaptcha.bak
  • 以上で、Ultimate-Memberプラグイ関連のlogin画面ではなく、WordPress標準のlogin画面が復活しています。
  • wp-login.phpにアクセスして、Loginできるようになっているはずです。
    • https://your-home-page/wp-login.php
編集履歴
2020/05/14 追記 (RedirectプラグインによるURLの無効化)
2020/10/24 追記 (UMのLogin画面が使用できなくなった場合にWordPress標準のLogin画面を有効にする方法)

まとめ

Ultimate Memberは,メンバーシップを構築できます.自分専用のページは勿論,ページの中のあるブロックだけでも設定が可能です.このプラグインの基本は,Login管理な訳です.

しかし,そのLoginのセキュリティを高めるreCAPTCHAが,Ultimate Member専用のUltimate Member – reCAPTCHAと,WordPress専用のreCAPTCHAがコンフリクトします.ログイン画面毎のreCAPTCHAがあれば問題は解決しそうですが,そのようなプラグインは,今のところ見つけられていません.

現状での対策として,Ultimate Member -reCAPTCHAに集約することにしました.

Ultimate Memberプラグインの既存の専用ページ

「ダッシュボード -> Ultimate Member -> 設定 -> 一般」で表示されるように、Ultimate Memberプラグインを導入すると7つの専用ページが予め作られます。

まずは、新規登録pageでユーザーが登録を申請してきます。その後承認されると、ログインpageが使用されます。

  1. 新規登録 page
  2. ログイン page
  3. アカウント page
  4. ユーザー page
  5. Member page
  6. ログアウト page
  7. パスワードリセット page

用途

権限グループの設定により、見せる/見せないを設定

Ultimate Memberの基本は、見せる/見せない、の設定にあります。ページ全体、ページの任意のブロックに設定できます

サイトに新規登録して、サイトのユーザーとなり、IDとPWでログインし、与えられている「権限グループ」に応じて、制限されているページの閲覧やブロックの閲覧が可能になります。

UM access Controls -> Restrict access?

Gutenbergエディタでブロックを編集している際(下図)、右に表示される「UM access Controls」をONにすると、以下の設定が可能になります。

  • Everyone : 初期設定は、だれにでも見せるようになっています
  • Logged in User : これを選択すると、更に詳細に誰にするか設定できます。以下のリストにチェックを複数つけることができます
    • Editor : defaultでリストされています
    • Author defaultでリストされています
    • Contributor defaultでリストされています
    • Subscriber defaultでリストされています
    • Web Designer defaultでリストされています
    • (追加したクラスが表示される)
      • Family (例えば)
      • Premium (例えば)
  • Logged out User
どのように表示/非表示させるかの設定

Logged in Userで、リストを選択すると、以下の設定が可能になります。

  • Hide Block (見せない)
    • 当該Blockを見せない
  • Show global default message
    • Ultimate Memberの設定に記載した文章の表示
  • Show custom message
    • 現れるカスタムメッセージ枠に文章を入力して、た文章を入力

Advice

記事中の一部のブロックに対して、「UM access Controls」で「Restrict access」を設定した場合、記事の一覧で表示される記事内容の一部「Excerpt」に、表示制限をかけているにもかかわらず、表示されてしまう問題があります。
対策は、表示制限したいブロックを「再利用ブロック」(Gutenbergで利用可能)にして、そこで、「UM access Controls」で「Restrict access」を設定をすれば、記事一覧の表示の際の、「Excerpt」に表示されなくなります。この対応で、メンバーシップを構築するのがよいです(2020/04/22)

システムの構成

システム構成

Synology NAS

  • 2020/07現在
  • DS920+ (DS918+からWordPressを載せ替え, 2020/07)
  • Disk Station Manager, Version 6.2.3-25426 Update 2 (2020/09/16現在)

WordPress

  • Version : 5.5.1-ja
  • Theme : Twenty Twenty
  • Editor : Gutenberg (標準エディタ)

その他、必要となるプラグインについては、関連記事を参照ください。

アクセス設定の方法

以下の図のように、「ダッシュボード -> Ultimate Member -> 設定 -> アクセス」は、初期値で誰でも閲覧できるように設定されています。

その下の、「Restricted Access Message」は、Classic Editor用の代替メッセージです。制限がかかったページ又はブロックの代わりに表示されます。

以下の図では、Gutenbergエディタで使用する場合にチェックを入れてす。

制限がかかったページやブロックを表示する際、「Restricted Block Mesage」に、代わりに表示するメッセージを入力しておきます。

html文を使うことはできるので、「新規登録のページ」にユーザーを誘導するアンカー文(<a href=“xxx”> ◯◯◯ </a>)をコーディングしたいのですが、現在(2020/02/15)、アンカー文の絶対アドレスが、正常に機能しません。

ブロックの制限(restrict)の仕方

ページ全体に制限(restrict)をかける

Gutenbergエディタを使用していれば、エディット領域の下にスクロールしていくと、以下の図のように「Restrict access to this contents?」とあるので、これにチェックを入れれば、このページに制限をかけられます。

ページ内の一部のブロックのみに制限(restrict)をかける

PageやPostの中で、あるブロックのみをログインしていないユーザーには見えなくすることもできます。

そうしたい場合、そのブロックの種類によっては、制御が効かない場合があります。

そのような場合は、gutenbergの標準のブロック(例えば”段落”)を挿入して、その段落ブロックのメニューからブロック化を設定したあと、その段落・ブロックの後ろに、アクセス制御したいブロックを図のようにクリックアンドドロップすることで、挿入できます。

以上の操作により、この段落と制御したいブロックの集合体としてのブロックが出来あがります。

このブロック化した集合体について、改めてアクセス制御を設定すれば、アクセス制御が正常に機能します。

ユーザー登録の流れ

最も楽でSPAMが回避できるユーザーの自動登録の手順は、以下のイベントの通りです。

下図には、「ダッシュボード -> Ultimate Member -> 設定 -> Email」で設定できる項目の具体例を示しました。

  • 登録しようとするユーザーが、新規登録(当サイトを参照ください)のページから、名前、Email address, PWなどを入力して送信する。
  • Ultimate Memberプラグインは、新規登録の申請を受け取り、「アカウント有効化メール」を、新規登録ユーザーの登録したEmail addressに送信する。
  • 新規登録ユーザーは、送り返されてきた「アカウント有効化メール」のリンクをクリックする。
  • Ultimate Memberプラグインは、新規登録ユーザーが、確認のEmailアドレスからクリックしたことを知り、このEmail addressが真正であることを知る。サイトの正式ユーザーとして登録する。
  • 以上の操作を座せるには、下図のように必要な項目にチェックしておきます。
  • 実際の運用面では、一週間に何回か、新規登録があります。しかし、「アカウント有効化メール」を処理(クリック)しないユーザーが殆どです。実在しないメールアドレスと見做し、SPAMと判断します。
  • SPAMと判断した新規登録ユーザーの定期的な処理として、「ダッシュボード -> ユーザー -> ユーザー一覧」にある、「メールアドレスの確認待ち中」となっているユーザーを削除します。

まとめ

当サイトは、AMP対応です。AMPに対応させるためには、ページのコードであるJavaScriptやHTMLは、AMPのルールに沿った制限がかけられています。

AMPのルールに合わないコードや余分なCSSは変換/削除されます。それでも正常に動くプラグインでないと使用できません。

Ultimate Memberと専用のreCAPTCHAは、AMP対応可能です。アクセス制限の掛け方やユーザー登録の流れについて、今回解説しました。先ずは、自分だけしか見れない制限付きのページを作ったり、制限付きブロックを含むページを作ったりして動作確認をしました。

以上

関連記事

以前に 自分のblogのWordPressサイトでmember shipプラグインを導入してメンバーシップサイトを作れないか実験的に検討をしていた時期がありました.AMP対応のためのプラグインとのコンフリクトを解消できず…
ID22131 Simple WordPress Membership Simple WordPress Membershipプラグインは、Ultimate Memberプラグインのように、メンバーシップを構築できるプラ…
ID14027 はじめに 当サイトは、試験的及び備忘記録として記録した内容は非表示にするために、Ultimate Memberプラグインを試験的に導入しています。 よろしければ、「いたずら」してみて下さい。使い勝手などが…
はじめに 調査を結果、Ultimate Memberプラグインをインストールしています。 当サイトは、Ultimate Memberプラグインを試験的に導入しています。よろしければ、「いたずら」してみて下さい。使い勝手な…

編集履歴

2019/12/08 はりきり (Mr)
2020/02/15 文言整備、追記 (ユーザー登録)
2020/02/22 文言整備
2020/04/22 記事一覧を表示した際、表示制限にあるにも関わらず記事内容が表示させる問題についての対策を追記
2020/05/08 追記 (まとめ、システム構成)
2021/03/07 追記 (サイトのロバストネスを確認するためのプラグイン: Statisfy, SiteGuard WP Pluginの紹介と運用)