WordPressを使って会員制サイトを作ることになった。
あまり詳しくないのですが、WordPressはプラグイン等で簡単に会員制のサイトが作れてしまうとのことで、早速挑戦してみた。
ただ理想のものに近づける為には無料のテーマとプラグインだけでは難しい部分もあるので、ちょいちょいカスタマイズが必要になりそう。
今回は、会員のログイン前とログイン後でトップ画面を切り替えれるようにしていこうと思う。
ログイン前とログイン後でトップ画面を切り替えるとはどういうことですか??
のぶこ
nakatty
ログイン前には大きく会員登録のボタンが欲しいんですが、ログイン後には会員登録ボタンて不要じゃ無いですか。
やりたいこと
今回、実装したいのはサイトへのログイン前とログイン後でページを切り替えるというもの。
会員(ログイン後)には左のページ。非会員(ログイン前)には右のページを表示できる様にしたいと思います。
トップページ用のページをつくる
今回はトップページ用の固定ページを2つ用意します。
1つ目は会員用(ログイン後)のページ
例)https://×××××.com/
2つ目は会員用(ログイン前)のページ
例)https://×××××.com/top/
非会員やログイン前の人が【https://×××××.com/】にアクセスした時は非会員用のトップページ【https://×××××.com/top/】に飛ばす様にします。
非ログイン会員を飛ばすコード
次に非ログイン会員を飛ばすコードを用意します。
“飛ばしたいページのURL”の部分に飛ばしたいページのURLを貼ってください。
1 2 3 4 5 |
<?php if (!is_user_logged_in()){ header( "location: " . "飛ばしたいページのURL" ); } ?> |
このコードを「front-page.php」に貼り付けます。
「front-page.php」へ行くにはダッシュボードから外観→テーマエディターに移動してください。
テーマの中から「front-page.php」を探します。
このファイルがトップページを表示してるファイルっぽいです。
もしかしたら使用するテーマによっては別の名称かもしれません、、、。
そして貼り付ける位置ですが
1 |
<?php get_header(); ?> |
とある場所の下で問題ないと思います。
するとこんな感じです。
1 2 3 4 5 6 7 |
<?php get_header(); ?> <?php if (!is_user_logged_in()){ header( "location: " . "飛ばしたいページのURL" ); } ?> |
これでサイト内にアクセスされた時、その人が非会員(ログイン前)であれば、飛ばしたいページに移動します。
そして会員(ログイン後)であれば、そのままトップページが表示されます。
コンテンツそのものを会員しか見えなくする
中にはコンテンツそのものをログインした状態じゃ無いと閲覧できない様にしたいという人もいると思います。
その場合のやり方もまとめようと思います。
nakatty
会員しか閲覧できないページを作るよ。
非会員の場合はトップページに飛ばされます。
それは結構、便利そうですね!
のぶこ
固定ページのテンプレート作成
会員しか見れないページを作成するには、会員しか見れないページ専用の固定ページテンプレートを作って、それを使ってページを作成します。
その作り方をまとめます。
(1)親テーマからpage.phpをダウンロードする。
(2)ダウンロードしたpage.phpをなんか適当に名前変える。(私はpage-member.phpにしました。)
(3)子テーマのに先ほど名前を変えたpage.php(私の場合はpage-member.php)をFTPソフト等を使ってアップロードする。
(4)ダッシュボードから外観→テーマエディターへ行き、先ほどのpage-member.phpを開く。
(5)↓の画像の様に名前やコードを追加する。
1 2 3 4 5 6 7 8 |
/* *Template Name: わかりやすい名前にした方がいいよ! */ <? php if (!is_user_logged_in()){ header( "location: " . home_url() ); } ?> |
これでテンプレートはできました٩(。•ω•。)و
会員用ページの作成
ダッシュボードから固定ページに移動し新規追加をします。
右側の項目の中から「ページ属性」を選択。
ページ属性の一覧の中に先ほど作ったテンプレートがあるはずですので、それを選択してページを作成すれば会員専用のページが作れます。
※テンプレートがうまく表示されない様でしたら
ダッシュボードから外観→テーマエディターへ行き、先ほどのpage-member.phpに以下の様に記述してみてください。
1 2 3 4 5 6 7 8 9 |
/* * Template Name: わかりやすい名前にした方がいいよ! * Template Post Type: page */ <? php if (!is_user_logged_in()){ header( "location: " . home_url() ); } ?> |
会員(ログイン中)であれば閲覧ができ、非会員(ログイン前)であればトップページに飛ばされます。
これで会員用のページが作れるようになしました٩( •̀д•́ )و