WIING WebServiceCloudのWordPress用メディアブログテーマです。-WIING MEDIA

Web制作に関する企業オウンドメディア-WIING media

  • twitter WIING WebServiceCloud
  • Instagram WIING WebServiceCloud
  • facebook WIING WebServiceCloud
  • note WIING WebServiceCloud
  • WIING media ログイン
HOME 〉WordPress 〉WordPressで簡易会員サイトを制作

2021.08.10 Tue  2021.09.12

WordPressで簡易会員サイトを制作

WordPress

WordPressで会員登録ができるようにしてみます

ワードプレスで会員登録が可能なサイトにカスタマイズしてみます。
もともとWordPressには各ユーザーグループが標準で実装されていて、権限ごとにサイトの運営上できることが制限されています。
今回はWordPressの最小構成の会員サイト制作について特集してみます。


プラグインの導入

会員サイト化を前提とすると、反射的にプラグイン導入が優先して考えられました。
グループ化と投稿に関する権限制限が前提で、かつ設定がシンプルで日本語化対応もある程度されていて、不具合が発生しにくそうなプラグインを選定します。

結果的にはSimple Membershipというプラグインが今回の希望にいちばんマッチしているようでした。
以前別のサイトでTheme My Loginというプラグインで会員サイトを設置したのですが、構造はシンプルで良い印象でしたが独自のグループ設定などは別のプラグイン導入が必要であるため、単一プラグインで要件を満たすSimple Membershipに決定しました。

Simple Membershipはグループの追加やレベル設定や個別の閲覧制限カスタマイズがわりと簡単にできるので、グループごとの閲覧制限や投稿制限などを設定しやすいようです。
ところどころ英文ですが、大半は日本語表示されているので基本設定もわかりやすいです。

ただHTMLのデザインカスタム中に今回希望する要件事項を見直しをしたところ、Simple Membershipの導入は断念しました。
理由については下述しています。

プラグイン導入時は時間をかけてしっかりと

要件定義を満たさないことが判明

Simple Membershipを導入しましたが、やはりこのプラグイン単体では今回の要件定義事項を満たすことはできませんでした。

主な希望機能としては、投稿者権限での投稿カテゴリーの制限とほかの記事の閲覧制限になります。
要するに閲覧者は特定のカテゴリーと自分の投稿記事、画像しか閲覧できないようにしたかったのです。

ほかのプラグインと併用することで上記の仕様を満たすことは可能なようですが、複数プラグインの導入リスクやカスタムの煩雑さなどを考慮して、今回は関数でユーザーグループの投稿制限をすることで対応しました。function.phpに関数を追記していくスタイルですね。

ただ投稿ユーザーのみ自分の投稿内容を確認できるという設定は直接の記述で対応できましたが、ユーザーグループを指定して、投稿カテゴリーを限定する方法がうまいきませんでした。

User Role Editorなど複数のプラグインを検討しましたが、権限制限やユーザーグループ追加ができるプラグインを複数導入すると、グループ追加や削除などの機能が重複してしまうため、不具合などが懸念されたため断念しました。
結果として権限グループもfunction.phpに直接関数を記述して追加することが可能なので、ユーザーグループ追加のためだけにプラグインを導入するすることはあまりメリットがないという判断もありました。

プラグインで投稿者のみ投稿可能なカテゴリーを設定できる単一機能型プラグインRestrictCategoriesがあったので、このプラグインのみ導入しました。プラグインの組み合わせや設定可能なのかもしれませんが、煩雑な設定をすると運用コストが高くなるため込み入ったカスタマイズを要するプラグインは採用しないようにしています。

経験のある事業者の方であれば同意いただけるかもしれませんが、WordPressは便利なプラグインが数多く存在しますが導入すればするほどその後のリスクが非常に高いため”必要機能の絞り込み”がWordPressサイト導入の重要なポイントの一つでもあります。

プラグインは最小構成で利用する

デザインカスタム時の誤算

さて既存のオリジナルデザインWordPressサイトにSimple Membershipの各画面を導入していくわけですが、会員登録ページでいきなりつまづきます。
HTMLコードを見ると、登録フォームの構成がtableタグで出力されています。フォームなどの表組系も基本リストタグでCSSを反映しているため、そちらの記述に変更する必要があります。

プラグインの登録フォーム出力HTMLタグのデザインカスタムはプラグインエディタのsimple-membership/views/edit.phpで可能なのですが、ほかのログイン画面等の関連画面のCSS実装の計画をしている段階で、あることを思い出します。

  • そもそもWordPressって会員登録可能では?

今回の会員サイトの基本要件は、

  • 無料会員登録
  • 登録後にすぐに利用可
  • 登録会員は投稿者権限
  • 必要情報はメールアドレスとパスワード
  • 決済機能などは現時点で不要

以上を踏まえて、simple-membershipプラグインが不要であったことに気がつきます。
function.phpへの機能別関数を追加しRestrictCategoriesで投稿カテゴリー制限することで、十分に対応可能でした。

決済機能もWordPressに実装するカートサイトなどもありますが、初期導入時は外部のASPカートや決済システムを多少手数料が高くなっても利用したほうが断然よいです。やはり会員登録機能も含めて、そこまで込み入った仕様にすることなく優先度の高い目的機能が実現可能なことに気が付きます。

今回は、そもそも会員登録プラグインが不要なようでした。

セキュリティとかいろいろ解説はありますが、

  • メンバーシップ だれでもユーザー登録ができるようにする = 投稿者

というのをプラグインなしで可能だったので、今回はプラグインなしの会員サイトとすることにしました。

simple-membershipプラグインでは会員登録画面では、ユーザー名、メールアドレスとログインパスワード(確認用もあり)、姓名とシンプルな構成でしたが、標準機能ではメールアドレスとアカウント名だけとさらにシンプルで、パスワードは自動送信される登録確認メールからのリンクで設定するような仕様となっていました。

登録情報には大きな差がないため、もともと個人情報を収集目的にしたものではないため、WordPress標準の会員登録機能で十分だと判断しました。

初期の機能実装は欲張らないことが大切

WordPressはもとから会員サイト?

会員サイトに限らずですがWordPressサイトへの機能追加をプラグイン前提という先入観で考えてしまう場合、

  • プラグインはもともとWordPressの基本機能を見やすくGUI化

しているだけに過ぎないと考えると、プラグイン導入や選択が上手くいきやすいかもしれません。

本体に基本的に付属していない内部機能はWordPress本体を改造しなくてはいけないので、関数をfunction.phpに記述するだけで対応できる場合もあります。
CSSやJQueryで対応可能な表示設定や描写も、GUIにこだわらない場合はあえてプラグイン導入が要検討の場合も往々にしてあります。

WordPressはもともと承認制限も含め自由に会員登録が可能な会員サイトで、ユーザーグループや権限などにより機能制限や表示制限が標準機能として実装されており、細かい制御をする場合には専用のプラグイン導入を検討すると結果的に良いかもしれません。

プラグインの利点は管理画面上で簡単に設定が可能で、あり有料版などを利用することで、より高度な機能利用がGUI上で利用できる点です。
反面、大量のファイルを読み込むことになり、ほかのプラグインなどとのコンフリクトが発生した場合やアップデートが終了した場合など、まったく手が付けられない状態になることが導入から短い期間内で発生するリスクがあることです。

カテゴリーの制限も関数の追加で対応可能だと予想されますが、煩雑な記述以外に最適な記述方法が見つからなかったので、RestrictCategoriesプラグインだけを利用した無料会員登録サイト制作について特集してみました。

WordPressは元々会員登録可能サイト

複数の会員レベルを制作する場合は・・・

簡易的に閲覧制限やユーザー権限を設定するには標準機能で十分ですが、たとえば、同じユーザー権限で会員ごとにランクやレベルを分けたい場合は、やはり会員サイト用のプラグインが必要になります。

会員ランクを分けるには、simple-membershipが最適なようでした。
決済機能も付属しているようですが、当社では、まずは外部ECサービスを利用することにしました。
基本的にはランニングで負担が大きくなることは好ましくないので、初期段階では必要最小構成で、可能な限り複雑な仕組みは外部ECサービスを併用することで、普段の運営や不測の事態が発生した場合にも対応しやすく考慮しています。

運用管理を軽減して運用強化がお薦め

twitter WIING WebServiceCloud

twitter WIING WebServiceCloud

掲載情報につきましては当社が独自に調査、検証および収集した情報です。

情報の妥当性や確実性を一切保証するものでなく、情報や内容が訂正や修正、変更されている場合があります。 よって、当社サイトの利用により生じたいかなる損害等についても運営側にて一切の責任を負いません。

掲載情報の修正・変更等をご希望の場合はお知らせください。