【18↑? y/n】パスワード保護されたページの文章をページ毎に設定・カスタマイズする方法

6
6

18↑? y/n

 この見出しを見て「なんのこっちゃ」と思った人はどれくらいいるでしょうか。
 私と同じ目的でこのページに辿り着いた方には説明するまでもないと思いますが、通じない人もいるかと思いますので念の為ご説明いたします。

 上記の文言はポイピクやぷらいべったー等のサービスにおいて、一部のセクシィな内容を限定公開する際にそのパスワードのヒントを示すものとしてよく使われているものです。
 とは言っても私自身が現在身を置いているジャンル、女性向け二次創作・同人界隈でよく目にしているというだけなので、他ではどうなのかは知りませんが…

 で、これをワードプレスでやりたいなというのが、今回の記事の本題です。

 ワードプレスではページ毎に個別のパスワードを設定して限定公開にする機能がデフォルトで備わっています。
 ここで更に任意の文章を表示させることができれば、例えば身内にしかわからないような問題を提示してそれに正しく回答できた人だけがページの内容を閲覧できる… といった閲覧者のフィルタリングができるわけです。
 

パスワード保護されたページの文章をページ毎に設定する

 それではここからは実際に編集した内容をまとめていきます。今回はそれほど難しい作業もないので出来るだけ簡潔に。

 まずどの記事でもいいので試しにパスワード保護したい記事を選んで専用のテキストを設定してみます。
 記事編集画面でカスタムフィールドの項目から【新規追加】を押します。カスタムフィールドがないよって方は画面右上の方に設定ボタンがあるはずなのでそこらへんを探って表示させてみてください。

 【新規追加】をクリックするとフィールドの名前が入力できるようになりますので適当な名前を設定します。名前はなんでもOKですが英数字で。そしてここで決めた名前はこの後も使うことになりますので忘れないようにメモしておいてください。
 私の場合は【mypw_text】にしました。

 次に隣の値の欄に表示させたいテキストを入力します。ここで入力する文章はこの記事でしか表示されません。

 名前とテキストが入力できたら、あとは記事をパスワード保護に設定して任意のパスワードを入力して投稿します。

 一度、投稿した記事がちゃんとパスワード保護状態になっているか確認してみてください。この時点ではまだ先程設定した文章は表示されません。


 カスタムフィールドの追加ができたら、あとはfunction.phpに必要な関数を追加します。

function my_password_form() {
	$value = get_post_meta( get_the_ID(), 'mypw_text', true );
	
	// 個別に設定したテキストがあるかないかで表示を変える
	if($value){
		return
			'<p>'. $value .'</p>
			<form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
			<input name="post_password" type="password" size="24" />
			<input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
			</form>';
	} else {
		return
			'<p>この記事は閲覧制限がかけられています。正しいパスワードを入力してください。</p>
			<form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
			<input name="post_password" type="password" size="24" />
			<input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
			</form>';
	}
}
	
add_filter('the_password_form', 'my_password_form');

 【mypw_text】の部分には先程カスタムフィールドに入力した名前を入れてください。

 記事にパスワード保護が設定されていて、更に専用テキストがある場合はifの上の方の処理が返され、ない場合は下の処理が返されることになります。
 上はページ専用テキスト、下は専用テキストがない場合に表示されるデフォルトの文章ということです。

 一番下の「add_filter…」は、カスタマイズしたパスワード画面を表示させる為のものだと思います。

 とりあえずこれでfunction.phpの編集も完了です。
 先程パスワード保護にした記事を確認してみましょう。

 カスタムフィールドで設定した専用テキストが表示されていればOKです。おつかれさまでした~✨

 尚、これ以降に別の記事をパスワード保護する場合は最初にやったカスタムフィールドの新規作成はやらなくて大丈夫です。
 既にパスワードテキスト用のカスタムフィールドがありますので、名前の欄から選択するだけでOK。

 ↑こんな感じで、最初の記事で作ったカスタムフィールドの名前を選び、あとはまた表示させたい文章を右側に入力してください。
 

備考

 パスワード画面に表示させるテキストの設定は以上で終わりですが、作業する中でいくつか注意点や気になった点を見つけたので書き残しておきます。


正しいパスワードを入力しても404が表示される

 もし、カスタマイズしたパスワード画面からパスワードを入力した時、正しいパスワードを入力しているにも関わらず404ページに飛ばされてしまう! という不具合が発生してしまった方は…

 こちらの記事が参考になるかもしれません。
 私の場合はこちらに書かれている原因がズバリそうだったようで、大変助かりました。ありがとうございます!


パスワードが間違っていた時にエラーメッセージを表示させたい

 デフォルトのパスワード画面では、間違ったパスワードを入力しても「パスワードが間違っています」などの表示が一切出ない為、パスワードが正しいのか間違っているのかわかりにくくなっています。

 これについての解決法を探したところ、以下の記事が大変参考になりました。

 掲載されているコードをまるっとコピペで問題なく使えました。ありがとうございます!


 以上… この記事に辿り着いた方のお役に立てていれば幸いです😊
 もし何かご不明な点やおかしなところ等見つけられた方は、コメントや問い合わせフォームからお気軽にご連絡ください。よろしくお願いします!

    web拍手/ご意見ご感想、ありがとうございました!
    返信をご希望の場合はメッセージ確認後、以下のページにて
    お返事させていただきます。

    お返事一覧

    6

    一言コメント

    お名前

    メッセージ

      web拍手/ご意見ご感想、ありがとうございました!
      返信をご希望の場合はメッセージ確認後、以下のページにて
      お返事させていただきます。

      お返事一覧

      6

      一言コメント

      お名前

      メッセージ

      活動記録
      シェアする
      シゲゾーをフォローする

      コメント

      1. anyscript より:

        Can I get the download password for the VRM model please? I’m sorry I couldn’t register my Twitter account and came here to ask you

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