ダイダロス・メモ

文月夕(もしくは悠)の覚え書きです。

*

WordPressの特定カテゴリーに年齢認証追加

      2015/05/22

準備編

1.カテゴリテンプレートの準備

テーマフォルダ内の「category.php」を複製し、年齢認証を設置したいカテゴリー用のテンプレート「category-xx.php」(xxの部分にカテゴリーの番号を入れる。カテゴリー番号は管理画面「カテゴリー」でそのカテゴリーの名前にマウスを乗せ、ステータスバーに出るアドレスを見ると、「ID=3」などと表示されるのでわかる)を作成。

例)
category.php(一般)
category-2.php(年齢認証)

2.個別ページテンプレートの準備

single.phpを複製し、年齢認証を設置したいカテゴリー用のテンプレートと、そうでないテンプレートに分ける。

「Wordpressでカテゴリー毎にsingle.phpのデザインを変更する方法 | webryy blog」を参考に、single.phpに場合分け用のコードを記述。

例)
single.php(場合分け)
single_normal.php(一般ページ)
single_r18.php(年齢認証用ページ)

3.ボタン画像の準備

はい/いいえのボタンを作成し、任意の場所にアップロード。(固定ページを編集する際に「メディアを追加」でアップロードすると簡単です)

こちらの画像でよければご自由にどうぞ。直リンクでなく、ダウンロードでお使い下さい。

yes no

設置編

1.年齢認証ページ作成

固定ページを新規追加します。タイトルは「年齢認証」などとし、テキストモードで、以下のように記述。

こちらは18歳未満のかたは閲覧できないページです。

あなたは18歳以上ですか?

<form action="http://www.sample.com/archives/category/r18" method="post">
<input name="r18answer" type="hidden" value="yes" />
<input alt="はい" src="http://www.sample.com/wp-content/uploads/2015/05/yes.png" type="image" /> <a href="http://www.sample.com/"><img src="http://www.sample.com/wp-content/uploads/2015/05/no.png" border="0" alt="no" /></a>
</form>

赤い部分にはあなたのWordpressのアドレス、ピンクの部分には年齢制限をするカテゴリ名(もしくはスラッグ)、青い部分には「はい」の画像のアドレス、緑の部分には「いいえ」の画像のアドレスを入れて下さい。

2.カテゴリテンプレートを編集

準備編の1で用意したカテゴリーテンプレート(上の例では「category-2.php」をエディタで開き、一番最初に、下記のように記述します。

http://www.sample.com/r18checkには、設置編の1で作成した固定ページのアドレスを入れて下さい。

3.個別ページテンプレートを編集

準備編の2で用意した個別ページのテンプレート(上の例では「single_r18.php」)をエディタで開き、一番最初に、下記のように記述します。(2とまったく同じコードです)

http://www.sample.com/r18checkには、設置編の1で作成した固定ページのアドレスを入れて下さい。

4.アップロード

準備編の1と2、設置編の2と3で編集したテンプレート群をすべてテーマフォルダ内にアップロードして下さい。

備考

こちらで紹介した年齢認証システムは以下のような働きをします。一部不便なところもありますのでご注意下さい。

年齢認証カテゴリに初めてアクセスした場合……
年齢認証用のページにジャンプし、「はい」をクリックすると年齢認証カテゴリのページに戻る。「いいえ」をクリックするとトップページに移動。

年齢認証カテゴリ内の特定のページに直接アクセスした場合……
年齢認証を経ていない場合、年齢認証用のページにジャンプ。「はい」をクリックすると、カテゴリーページに移動。(見ようとしたページに直接移動はできない)

ブラウザでクッキーを無効にしている場合……
正常に動作しません。

なお、年齢認証対象のカテゴリ内のページにアクセスした最後の日時から24時間以内は、ブラウザを閉じても認証を継続します。

自分のサイトに実際に設置してみたものの紹介ですが、動作検証など甘い部分もあるかも知れません。ご了承下さい。

 - Wordpress