会員制サイトの作り方

もくじ > Web開発ノート > WordPress

情報を発信するならば、SEO対策を頑張って不特定多数の人に見つけてもらいたいものです。しかし、アクセス数を増やしたところで、本来の目的は達成できたでしょうか? 新しいお取引や、有意義な情報交換ができる出会いはありましたか?

手探りで新しい出会いに期待するよりも、今、既に繋がっている大切なお取引先様に、もっと有意義な情報を伝えて、より強固な関係を築く事も忘れてはなりません。
最近見直されているのは、不特定多数への情報発信の一方で、見て欲しい人だけに見てもらえる事を目的とした丁寧な情報伝達です。

ここでは、会員制によるクローズドなWebサイトを作る方法をまとめてみました。

WordPressを会員制にする

WordPressを使ったサイトを会員制にしたい。というご要望も少なくありません。

WordPressに、新規会員登録や、会員種目による閲覧制限、退会処理など、会員制サイトとして必要な機能を実装するプラグインも無料や有料のものがいくつかあります。

ただ、個人情報を扱うサイトで、会員登録から退会処理までを全てプラグイン任せにするには不安があります。WordPressのアップデートによって誤動作を起こしたり、半分程度の読解力で読んだ英語マニュアルを見て導入したプラグインにどの程度の信頼性があるかもわかりません。

しかし、会員登録や、退会処理などは、別のシステムや、人の手を介した手続きなどによって行い、WordPressにはログイン後の閲覧制限のみをさせたい場合、プラグインなどを導入する必要もなく、WordPressそのものが既に会員制機能を備えています。

WordPressの権限について

初期ユーザー権限

WordPressにはあらかじめ以下のようなユーザー権限が用意されています。

管理者:全ての操作や設定が可能。
編集者:システム以外の全てのコンテンツ運用操作が可能。
投稿者:記事の投稿、編集、削除、公開が可能。
寄稿者:記事の下書き、編集のみが可能。
購読者:コンテンツの閲覧のみ可能。

WordPressで会員制のサイトを作る場合、以上の中の購読者権限を発行すると良いでしょう。

権限の種類の例

基本的な権限を更にカスタマイズする事で、ブログを購読できるといったレベルを超えた会員制サイトを構築する事ができます。WordPressに用意されている権限分けは、だいたい以下のようなものです。

WordPressのシステムに関わる設定
ユーザーの追加や編集など
固定ページの編集
記事へのコメントの承認
メディアライブラリの操作
記事の投稿
記事の編集
記事の公開
記事カテゴリーの管理
公開サイトの閲覧

権限分けの処理の記述例

初期設定に任せて、自動で権限分けするだけでなく、ログインしている権限の種類によって、処理を分岐させる事ができます。

権限分けの処理の例

//管理者権限以外は許可しない
if(!current_user_can('administrator')){
 wp_die("アクセス権限がありません。");
}

権限のカスタマイズ

//投稿者権限からファイルアップロード権限を削除
$role = get_role( 'author' );
$role->remove_cap( 'upload_files' );

//寄稿者権限にカテゴリー設定権限を追加
$role = get_role( 'contributor' );
$role->add_cap( 'manage_categories' );

権限の削除や追加

//管理者権限をコピーして開発者権限を追加
if(!get_role('developer')){
 $my_admin_role  = get_role( 'administrator' );
 $capabilities  = $my_admin_role->capabilities;
 add_role( 'developer', '開発者', $capabilities );
}

//寄稿者権限を削除
if(get_role('contributor')){
 remove_role('contributor');
}
//投稿者権限を削除
if(get_role('author')){
 remove_role('author');
}

ログアウト後のリダイレクト先設定

閲覧ユーザーがログアウトした後のリダイレクト先をログインページなどに変更すると、より会員制サイトっぽくなります。以下の例では管理者以外のユーザーがログアウトするとWebサイトのトップページにリダイレクトします。

function redirect_logout_page(){
 if(!current_user_can('administrator')){
  $url = get_bloginfo('url');
  wp_safe_redirect($url);
  exit();
    }
}
add_action('wp_logout','redirect_logout_page');

ログインエラーのリダイレクト

誤入力などによるログインエラーのページを変更しておきましょう。

function login_fail() {
 $url = get_bloginfo('url');
 $url.= '/loginfailed/';
 wp_safe_redirect($url);
 exit();
}
add_action( 'wp_login_failed', 'login_fail' );

個人情報について

会員制サイトを作る時に避けては通れないのが、個人情報をどうするか?という問題です。

法律では個人情報保護法が2003年5月に成立し、2005年4月から施行され、更に2015年に改正され、その改正内容が2017年5月から施行されました。

個人情報の取り扱いに関する法律は、国や地域によって異なり、時代に合わせて変更されていっています。規制がゆるくなる事はなく、年を追うごとに厳しくなっていっています。

ここでは個人情報保護法についての細かい説明は省き、Webサイト運用者が注意するべき要点をまとめてみました。

保護されるべき個人情報とは?

個人情報の定義はより厳しいものに変化していっていますが、個人情報の基本的な定義とは「特定の個人を識別できる情報」です。

それは、住所、電話番号、顔や特徴的な姿の写真、行動記録などといったものです。

Webサイトに保存されるCookieへの行動記録なども含まれる場合もあります。

対外的明確化

事業者は、個人情報をどのように扱うのか? どうやってその情報を守るつもりなのか?といったものを、明確にして目立つように公開する必要があります。

必要な対策をして、その内容を公表する事で、プライバシーマークの認定を受けることができますが、その場合、より厳しく義務化される事になります。

暗号化は必須

Webサイトにおいて、メールフォームなどの個人情報を通信する機能がある場合、その通信を暗号化する義務があります。その通信規格はTransport Layer Security(TLS)や、Secure Sockets Layer(SSL)と呼ばれています。

しかし、最近は、メールフォームだけでなく、Webサイト全体に対してSSL化が必須になってきました。https化されたURLでないと実行できないAPIやJavaScriptの実行文などがあります。検索サイトでもSSL化されていないWebサイトは除外されたりするようになってきました。

今の時代において、WebサイトのSSL化は必須と考えたほうが良いでしょう。

インターネット分離

個人情報を扱う場合、インターネット分離という対策が勧められています。

どんなに強固なセキュリティ対策をしたところで、ネットワークが繋がってる限り、そこにはネットワークを介したハッキング行為の手が届いてしまいます。

しかし、もし、個人情報をネットワークから切り離した場合は、どうでしょうか?

どんなにハッカーが遠隔操作で頑張っても、自ら足を運んで扉を開けに来ない限り、個人情報を探る事ができません。

これをインターネット分離と言います。

例えば、WordPressを会員制サイトにしたとして、その会員の実名、住所、電話番号を、WordPress内に保存しておくとします。そのWordPressに第三者がログインした場合、その個人情報は筒抜けになってしまいます。

WordPressの中には万が一情報が洩れても、個人を特定できるような重要情報を保存せず、重要な個人情報に関しては、社内のネットワーク内に匿っておくか、もしくはプリントアウトして金庫に仕舞って、デジタルデータは消去してしまえば、これはネットワークから分離して重要情報を守った事になります。