URL(パーマリンク構造)を見直したためリンク切れの嵐です。ごめんなさい!

WordPressのプラグイン WP-membersで会員専用ページ作成

この記事は約13分で読めます。

ホームページの目的によっては、サイトの一部、または全部を非公開にした「会員制サイト」を作りたい場合があります。ここでは、 プラグインWP-membersの導入方法と設定の仕方等を説明しています。

スポンサーリンク

こんなサイトをつくりたい!

 さて、会員制サイトの基本的な考え方は、IDとパスワードを入力したユーザーにしかコンテンツを表示しないというものです。

コンテンツにアクセス制限をかける

 鍵をかけるコンテンツが「サイト全体」に及ぶものなのか、「ページ単位」なのか、「続きを読むには会員登録が必要です」のようにするものなのかと目的によって違ってきますが、鍵をかけるという意味では根本的なところでは同じですのでまずは任意のコンテンツに鍵がかけられるようにします。

ユーザーの管理を簡単に

 さらに、運用面では管理者はユーザー全体を把握して管理することができるようにしたいです。

 会員の方々にとってログインの方法が分かりやすいもの、さらに、パスワードや登録情報などは会員の方が自分で簡単に変更できるようにします。

セキュリティも万全に

 そして、最後はセキュリティの問題。重要な個人情報を掲載するわけではないにしても、IDとパスワードを入れて公開するページの情報がダダ洩れでは意味がありませんよね。本当に会員にしかアクセスできないようにするにはどうしやたよいのか。このようなことを考えて会員制サイトを作ってきました。

使うプラグインは2つ!

 さて、やりたいことに合わせて使うプラグインが変わってきます。まず、最低限必要なものはwp-membersです。

wp-membersでできること。

 鍵をかけるコンテンツが「サイト全体」に及ぶものなのか、「ページ単位」なのか、「続きを読むには会員登録が必要です」のようにするものなのかと目的によって違ってきますが、鍵をかけるという意味では根本的なところでは同じですのでまずは任意のコンテンツに鍵がかけられるようにします。

ユーザーの管理を簡単に

 さらに、運用面では管理者はユーザー全体を把握して管理することができるようにしたいです。

 会員の方々にとってログインの方法が分かりやすいもの、さらに、パスワードや登録情報などは会員の方が自分で簡単に変更できるようにします。

セキュリティも万全に

 そして、最後はセキュリティの問題。重要な個人情報を掲載するわけではないにしても、IDとパスワードを入れて公開するページの情報がダダ洩れでは意味がありませんよね。本当に会員にしかアクセスできないようにするにはどうしやたよいのか。このようなことを考えて会員制サイトを作ってきました。

会員制サイト ファイルの直リンクを防ぐ

 コンテンツをパスワードで保護しても、そこからリンクする画像やファイルにアクセスできてしまうことがあります。これは、画像データが別のフォルダにアップされていることで、直接アドレスを入力すると簡単に見ることができるという問題です。

 実はこれ、同様のことが、FaceBookやGoogleプラスワンなどでも起こっていて、限定公開と思ってアップした画像が世界中に出回り、しかも削除できないということで、問題となっていたことがあります。流失したら困るものをアップしないことが一番ですが、せっかくのメンバー限定ページ。セキュリティについては考えたいものです。

wp-includes/ms-files.phpを編集

 ms-files.phpを編集します。20行目の下あたり(error_reporting( 0 );の直下)に下記のコードをコピペすると上手くいきます。

require( ABSPATH . WPINC . ‘/capabilities.php’ );
require( ABSPATH . WPINC . ‘/user.php’ );
require( ABSPATH . WPINC . ‘/formatting.php’ );
require( ABSPATH . WPINC . ‘/meta.php’ );
wp_plugin_directory_constants( );
ms_cookie_constants( );
wp_cookie_constants( );
require( ABSPATH . WPINC . ‘/pluggable.php’ );
if ( !is_user_logged_in() ) {
status_header(404);
die(‘go home baby!!’);
}

 念のため、ログアウトして確かめてください。上手くいきます。ただし、WordPressがバージョンアップするたびに上書きされてしまいます。毎回直すのは面倒なので、困ったものです・・・。

※以下、編集中

札幌市学級経営研究会のホームページの会員システムに関わるプログラムを多数修正しました。

まず、参考にしたサイトはこちら > 会員制サイト-WP-Members – WordPress 編

すでに、ログインしていないと続きが見られないというところまではできていましたが、 
本日の作業は主に、会員登録や会員のみなさまが少しでも使いやすいように 
メールの内容を編集したり、表示を工夫したりするものです。

1、wp-member から送られてくるメールの文面を修正・簡素化

2、ログインフォーム、のデザインを修正(プラグインのスタイルシート修正)

3、パスワード紛失時のリセットシステムの改善(デザイン・確認メール内容)

4、ログイン時に表示されるページトップに表示されるツールバーの非表示化(管理者用のみ表示)

5、ログイン時と非ログイン時に表示されるメッセージを切り替えるシステムの導入

ログイン時とログアウト時の表示を変える « webメモ帳

6、会員編集、パスワード変更、ログイン、ログアウトボタンの表示。(トップページ・記事ページ)

7、登録済みIDの整理 再登録するIDは一度データベース本体から削除し再登録

8、FORUM(bbpress)システムの休止と入口の削除

9、ログアウト時に管理画面を見せないようにするためにリダイレクト先を変更

ログアウト後リダイレクトするページを変更する – Web Design Tips

10、会員登録の必須事項変更

11、イベント申込みフォームのお弁当欄の追加

12、新規会員登録時の作業の簡素化 
管理者画面を開かずに、登録を可能にした。(wp-memberの新規登録を応用)

13、自動的に表示される「はじめての方はこちら」のリンク先を札学経の会員登録のページに変更 
一般の人が自由に会員登録できないようにする。(wp-memberの新規登録のページへのリンクを)

14、ヘッダーメニューの修正

15、メールアドレスを作成しての動作テスト 新規登録・パスワードリセット・変更・会員情報変更 
登録時画面、入力送信後の画面、レイアウト、確認メールの文面・レイアウト、送信元の確認

16、ユーザー権限により表示されるダッシュボードコンテンツをシンプル化するプラグインの導入 
試用、目的を達成できずに撤去

ニッチなパッチプラグイン→WordPress3.0対応

17、メッセージにユーザー名ではなく、名前を表示するようにチャレンジ 
いろいろ試すもうまくいかず、断念。「ユーザー名+さん」で表示。

1、WP-member

まずは会員サイトのベースを設定しました。WP-memberを使うことで、ログインした人しか記事にアクセスすることができなくできます。サイト全体、記事ごと、記事のmoreタグ以降など設定の仕方はさまざまですが、これで公開範囲を会員のみに限定できます。

2、直リンクを防ぐ

画像ファイルは自分のホームページからアクセスしないと見ることができません。つまり、フォルダ階層やファイルの名前の付け方などを参考に、URLに直接画像のアドレスを打ち込んで見られてします。そういうものを防ぐ設定をしました。インターネット上に情報はあると思いますが、.htaccessを作成します。以下の場合、https://n-hokkaido.com/http://f.n-hokkaido.com/からのアクセスの場合は画像が表示されます。

<Files ~ “.(png|jpg|gif)$”>
SetEnvIf Referer “https://n-hokkaido.com/” OK
SetEnvIf Referer “http://f.n-hokkaido.com/” OK
order deny,allow
deny from all
allow from env=OK

3、メインサイトに更新情報は表示

WP Over Networkというプラグインで表示ができます。私の場合ウィジェットに会員サイトの情報を表示するようにしました。ただ、デフォルトだと画像まで出てしまうのでよろしくないと思い、プラグインのデータを一部変更し、画像表示をしないようにしました。やったことは、プラグインフォルダの中のtemplatesフォルダにある、archive-simple.phpを編集です。画像を呼び出している部分をそのまま削除して終了です。

4、Wordpressのダッシュボードから

検索エンジンがサイトをインデックスしないようにするにチェックを入れました。

そうしたらWP Over Networkで新着記事が表示されませんでした。

あとはサイトのデザインなど細かい設定をすれば完成のはずです。

会員専用も、ディレクトリを別にしてやれば簡単ですが、ファイル数も多いしいちいち面倒。今回は、マルチサイトの子サイトという形に変えたので管理が楽になりました。

マルチサイトの子サイトをMembers Onlyで会員専用サイトにした場合の不具合検証

 なまら北海道だべさの会員サイト、wp-membersというプラグインのおかげで、ログインさえできればユーザーが登録情報を変更することができ目立った問題はないようである。メールアドレスやパスワードは各自で変更できたほうが何かと便利だと思う。この辺は満足している。しかし・・・。

1、ユーザー登録を自動でできない

 サイト全体に鍵をかけることになるので、ユーザーに自分で必要事項を入力してもらって管理人が承認するだけというやりかたができない。本当はこれができるのが一番ありがたいのだが、今のところ、メインサイトのメールフォームを使い、事前にユーザー情報を送信してもらい、私がIDとパスワードを発行する。

2、MS Custom Login

 ログイン画面もオシャレに変更できた。これで完璧だ!と思ったのだが、ここで問題が発覚。パスワードを忘れたときの設定がメインサイトに飛んでしまう。おそらくこの一点が解決できれば問題なくいきそうなのだが、結構重要なところなので無視できない。

image

WordPress › フォーラム » マルチサイトのwp-login.phpについて

あまりやりたくないのだが、テーマのfunctions.phpの記述を変更することでリンク先の変更はあっさり可能だった。しかし、引き続き第2の壁が・・・

image

これに入力して新しいパスワードを取得をしようとすると、メインサイトのログイン画面に飛んでしまい、なおかつ送られてくるメールもメインサイトのもの。こうなってくると、先ほどのfunctions.phpの設定もわざわざやったのに・・・と無意味に感じてしまう。バージョンアップで再度設定が必要になることはできるだけ避けたいものである。

3、解決策をさぐる

 私がいろいろ検証した結果、サイト全体に鍵をかけるMembers Onlyではどう頑張ってもこの状態である。個別ページに鍵をかけるwp-membersのほうでは、その範囲内であるが特に問題は感じられない。ユーザー登録もパスワード関係も理想の通りというところである。トップページやサイドバー、記事の見出しが見られても問題ないのであれば、wp-membersでやるのが一番簡単そうである。しかし、当サイトの場合、会員サイトは完全にメンバー限定にしたいと思っている。そうなると解決策の一つは、先ほどのフォーラムの続きに挑戦することである。しかしながら、バージョンアップの度に修正するのも面倒である。

 もう一つは、wp-membersに対応させることである。外部からみられる部分に出す情報と、ログインしなければ見られない情報を整理すること。チラリズム的な感じにはなってしまう。宣伝効果という意味では悪くはないかもしれないが、気を使うのがデメリットである。

 最後はは、あきらめることである。会員の数も少ないのだから、「IDとパスワードを忘れた場合はメールで聞いてね!」これは超簡単な方法なので最終手段として取っておくことにする。

4、wp-membersを最大限に活用する方法を探る

 やはり、総合的に考えると、wp-membersは良さそうである。そこで、サイトのトップをログインフォーム、その他ウィジェットは、表示設定でログインしていないときは表示しないというように変更してみた。これならば表示されているものも当たり障りのないものに限定でき、おおむね良さそうである。ただ、まだあった。最後の問題として残るのが関連記事と今までにいただいたコメント。これもログインしていないと表示できないようにすることが必要である。もう一息!

5、shingle.phpの編集

<?php if(is_user_logged_in()):?> と <?php endif;?>で関連記事とコメントの部分を囲む。

うまくいった!

PHP Code Widget

 ならば、ウィジェットで設定でもできればテーマが更新されても大丈夫では!と思いこれで試してみましたがうまくいかず・・・。でも、なんとかここまででやりたいことは形になってきました。明日は最終的なチェックをして完成といきたいところです。

なまら北海道だべさ会員サイトのID管理関係についてまとめました。実際に会員登録したときにどう相手に表示されるのか、どんなメールが行くのかをチェックすることってなかなか難しいですよね。独自ドメインを持っていれば、メルアドを複数作ることができるので、実際に試しながら記録してみました。

ユーザが見る画面①

 サイト上にアクセスして新規ユーザー登録をします。何を入力してもらうかはWP-Membersのフィールドで作成します。「ハンドルネーム」はオプション名をdisplay_nameにしておくと、ダッシュボードにアクセスしたときに「ブログ上の表示名」に反映されています。

image

うまくいくと次のメッセージがサイトに表示されます。

image

 また、登録した人は次のようなメッセージを受け取ります。メールの文面はWP-Members メール設定や、ダイアログの設定でできます。私はここでIDとパスワードの控えが送られるようにしておきました。メール設定を下記のようにしたので・・・

image

相手が受け取るのは、下記のようなメールになります。

image

管理人が見る画面①

 一方管理人にもメールが届きます。管理人に届くメールも同じように文面を編集できます。私の場合はこのメールを受け取った時に何をするかを書いておきました。

image

と設定したので、下のようになって届きます。

image

 ユーザーが入力した情報を有効化するかどうか判断し、有効化する場合は、リンクからダッシュボードにアクセスします。すると、入力してもらった情報が反映されています。

そのままでもよいのでしょうが、私の場合以下の2点を修正しています。まずは、「サイトを見るときにツールバーを表示する」はいらないのでチェックを外す。

image

そして、セキュリティ上の対策として、プラグインでEdit Author Slugを適当に変更。

image

 このユーザーを承認しますか?をチェックして「ユーザーを更新」します。管理人がするのはこれだけです。

ユーザーが見る画面②

すると、相手に2通目のメールが届きます。

image

と設定しておいたので、

なまら北海道だべさ友の会会員サイトIDとパスワード発行のお知らせ

image

これでIDとパスワードが利用できるようになりました。

ID発行後にユーザーが見る画面

ではログインしてみましょう。

image

できました。

image

マイページにアクセスすると登録情報の編集

image

パスワードの変更が可能

image

image

さらにもう一工夫

ログアウトしたときに、ログイン画面にリダイレクトするのではなく、なまら北海道だべさのメインに飛ぶようにfunction.phpに次のコードを挿入。

function redirect_fix(){
wp_safe_redirect(“http://n-hokkaido.com”);
exit();
}
add_action(‘wp_logout’,’redirect_fix’);

パスワードを忘れた場合にユーザーは・・・

image

から自分でパスワードリセットの申請ができる。

image

image

管理人は通さずユーザー自身でパスワードを受け取り、再アクセスが可能となる。

image

これで会員のIDとパスワードの機能はやりたいことが実現した感じになった。結局のところ、WP-membersがマルチサイトの子サイトでは一番使い勝手が良いということだった。

タイトルとURLをコピーしました