ワードプレスで会員専用ページを作る時に最低限行うべき4項目
仕事でワードプレスを使って、会員専用サイトを作る機会があったので、今回はその時に私が設定した5項目について備忘録として残しておくことにした。ちなみにプラグインは、ほとんどなし。ほとんど、テーマをいじって作った。
(てか2、3日ググりまくってやっとできから、めっちゃ嬉しかったし、みんなに自慢したいw)
もし、同じようなサイトを作らなくてはならなくなった時には、ぜひ参考にして頂きたい。
さて、今回作らなくてはいけなかったサイトが、下記のような会員サイトである。
- サイト全体にパスワードをかける
- ログインした人には、中身をいじられないようにする
- 会員サイトの中にさらにもう一つのパスワードでロックされたページを作る
- 会員がログインした後、10分程度操作が行われなかった場合は、勝手にログアウトするようにする(←こいつがマジくせ者)
正直言って、4番目にほとんどの時間が取られたと言っても過言ではない。これの情報がマジでグーグルにない。(ヒントはあった。)
それでは、一つずつ順を追って説明していこう。
⒈サイト全体にパスワードをかける
これに関しては、ちょっとググれば色んな方法が出てくる。
一番簡単なのは、プラグイン「Password Protected」をインストールすることだ。ただし、この方法だと、のちに設定しなくてはならない、ログアウトをさせる方法が一向に見つからなかったため、断念する。
そこで私が導入したのが、ワードプレスのユーザー機能(購読者を今回は使う)を使った、ログイン方法だ。
まず、ログインしないとサイトが見れないようにするために、外観>テーマの編集でheader.phpをいじっていく。
導入するコードは、下記だ。
<?php if (is_user_logged_in()){
}else {auth_redirect();
}; ?>
ちなみに、このコードはheader.phpの一番上に置く。これを説明してた人は、header.phpに置くとしか書いてなかったが、私はどこに置くかも書いて欲しかった。なので、私は親切にも、置いた場所の画像も載せておく。
↑こんな感じ↑
これで、サイト全体にパスワードをかけることができた。
なぜ、これでパスワードがかけれるのかは知らないが、みんなも知りたいのは、パスワードのかけ方であって、その原理ではないはずだ。
もちろん私も知らない。
⒉ログインした人に、中身をいじられないようにする
1で、サイトにパスワードが設定できたが、作ったばかりのサイトであれば、サイトに入れるのは、管理者であるあなただけだ。他の人にも見れるようにして、なおかつ、サイトの中身をいじられないようにするためには、購読者のユーザーを追加する必要がある。
ワードプレスのダッシュボードの中に、ユーザーという項目があるので、そこから新規購読者ユーザーを登録する。
管理者はあなたのアカウントで、購読者は会員がログインする時に必要な アカウントだ。購読者のアカウントは、サイトの閲覧しかできないので、中身をいじられることはない。
なお、購読者の設定として一つ設定しておきたいのが、下記の部分だ。
サイトを見るときにツールバーを表示するの部分のチェックをはずすことだ。
このチェックがついていると、サイトを閲覧するときに、ツールバーが出て、この個人画面に入ることができてしまう。ここからサイトの内容を変えることはできないが、個人のパスワードを変えたりできてしまう。(今回は、社内共有ページのようなものだった。なので、パスワードを変えられると他の人がログインできなくなるので、今回はチェックを外した。ただし、それぞれを個人のアカウントで設定したい場合は、チェックを入れて、パスワードを変えれるようにしても良い)
これで購読者が設定できた。これで、サイトのホームページにアクセスしようとすれば、下記のようなページが表示される。
あとは、購読者のアカウントでログインすれば、立派な会員サイトの出来上がりだ。
⒊会員サイトの中にさらにもう一つのパスワードでロックされたページを作る
これに関しては、設定はめっちゃ楽で、投稿ページ、固定ページの編集画面で設定することができる。
それぞれの編集ページに、パスワード保護という項目がある。ここでパスワードを設定して、公開すればパスワードで保護されたページを作成することができる。
なお、このパスワードを設定するとサイトでの表示が少し変わって、タイトルの前に「保護中」という文字が出てしまう。
これをいろいろ変更することができるが、それに関しては、より詳しい記事のリンクを貼るので、ここでは割愛させてもらう。(めんどい)
【WordPress】パスワード保護ページをカスタマイズ!カスタムフィールドでテキスト変更できるようにしたりする
⒋ 会員がログインした後、10分程度操作が行われなかった場合は、勝手にログアウトするようにする
私が今回のサイト作りで一番苦労したのが、この強制ログアウトの実装だ。まず、いろいろと強制ログアウトのことをググりまくっていると、出てくるのは、管理者が一定期間操作を行わないときに、勝手にログアウトするというものだ。
ただ、管理者は今回ログアウトする必要はない。ログアウトして欲しいのは、購読者の方だ。 しかも、10分程度という時間指定までついている。
めげずに、色んなサイトを回遊してみるが一向に、それらしい情報が出てこない。
「なんとなくだが、ログイン情報というのは、ブラウザのCookieを使って保存されるはずだ。」
という浅はかな知識で、Cookieのことを調べても一向に分からない。(早く書けや)
そんなとき、一つの記事に出会った。
実は、この中で書いてある方法では、私は実装することはできなかった。
しかし、かなり重要なヒントを得ることができた。
wp-includes/pluggable.php の831行目、「wp_set_auth_cookie」が、クッキーの設定をしている部分。
「 この一文は、かなり重要なのではないか?」
そこで、レンタルしているロリポップのサーバーのFTPの中を見てみる。
あった・・
中身を見てみる。
831行目なんか知らんが、一気にスクロールして、それっぽいところを探す・・
すると・・・・
あったぞ・・
いかにも、Cookieを管理してそうな構文が・・
よく分からんが、全部10分にしてやる!!!!!
すると、なんと、ついに・・・・
10分で強制ログアウトできたー
やはりCookieに目をつけたのは、間違ってなかった。
私は、ついに10分で強制ログアウトするサイトを作ることができた。(この3つ全てを変える必要は本来ないかもしれないので、あくまで実行する場合は、ちゃんとバックアップ取りましょう)
以上が、私が今回会員サイトを作る過程で行なったことである。
正直このようなサイトを作ることは、滅多にないと思う。ただ、もしどれかの項目でも導入しても良いものがあれば、ぜひ参考にしてもらえればと思う。
(多分、こういうノウハウページをこんなテンションで書いてる人、ほとんどいないんじゃないかな・・・)