WordPressのパスワード保護ページの作成とカスタマイズ
この記事を読むのに必要な時間は約 12 分です。
(専門用語などにはポップアップする説明をつけているので時間が長く表示されることがあります。
ツールチップの機能については、こちら)
WordPressには標準で「パスワード保護」が搭載されています。カンタンに言えば「自分自身で作成したコンテンツに閲覧制限をかけるための便利機能」です。
状況によっては「特定記事だけを限定公開にしたい」といったシチュエーションも出てきますよね。パスワード保護はそんな状況でとても役に立ちます。
しかし、いいことばかりではありません。
「パスワード保護」された記事は、そのままでは記事一覧に表示されてしまいます。
できれば表から見えないようにしたいですね。
今回は、「パスワード保護」する方法とそのカスタマイズについて解説します。
「パスワード保護」する方法
投稿記事を保護する方法について解説します。
クラシックエディタとブロックエディタで表示方法が違うので両方わけて解説します。
「パスワード保護」するだけなら初心者の方でも簡単にできます。
クラシックエディタの場合
「投稿ページ」⇒「新規投稿」より記事を作成します。通常であればすぐに「公開」ボタンを押す所ですが、パスワード保護をかけるには、「公開状態」の編集をクリックください。
「公開状態」の編集をクリックすると上記画像のように表示されます。
ラジオボタンを「パスワード保護」に変更します。
ラジオボタンを「パスワード保護」に変更すると上記画像の状態です。
パスワードを入力して「OK」ボタンをクリックするとこの記事がパスワードで保護されます。
ブロックエディタの場合
新規作成で開いた場合にはじめて投稿ページを作成する場合など②の赤枠部分が表示されていない場合があります。
その場合は、①の歯車のアイコンをクリックして②の部分を表示させます。
③の赤枠の「公開」の文字をクリックします。
上記画像のように公開状態が開きますのでラジオボタンを「パスワード保護」に変更します。
ラジオボタンを「パスワード保護」に変更すると上記画像の状態です。
パスワードを入力して完了です。
旧タイプのクラシックエディタでは、「OK」ボタンをクリックしていましたが、ブロックエディタでは必要ありません。
1つ手間が減ったことになります。
「パスワード保護」された記事をブログ一覧に表示しない方法
ブログ一覧などの表示方法は、テーマによりリスト表示やタイル表示など様々ですが、「パスワード保護」された記事も基本的には表示される仕組みです。
「パスワード保護」された記事は、本来なら隠しコンテンツに分類されます。
そういった記事を表示しておくのはよろしくないということで記事一覧などで非表示にする方法を解説します。
ただ、最初に断っておきますが、テーマファイルのfunctions.phpを編集しますのでまず基本的な理解がない方には敷居の高い編集方法となります。
最悪、真っ白になって表示できない状態になることもあります。
上記の記事ではわからないことも多いかもしれません。
順番に解説しますが、まずテーマが何かバージョンいくつなのかをちゃんと把握して子テーマを使うということです。
子テーマを使うことでテーマ本体のファイルは何もさわりません。
次に Windowsであっても macOSであっても文字コードがUTF-8で編集できるエディタを使うということです。
Windowsで推奨しているのは、Terapadです。
macOSで推奨しているのは、Sublime Textです。
またファイル更新にはFTPを使うことを推奨しています。
使ったことない方は、下記の記事を参考にしてください。
以上、上記の子テーマを使うこと、UTF-8で編集できるエディタを使うこと、FTPでファイル更新することの3点が最低限知っておくべきこととして理解できる方が作業してください。
開くファイルは、「あなたのドメイン/wp-content/themes/子テーマ名/functions.php」になります。
ファイルの最後に下記を追加してください。
1 2 3 4 5 6 7 8 |
//パスワード保護記事を一覧から非表示にする function password_post_exclude_archive_posts($query) { if(is_singular() || is_admin()) { return; } $query->set('has_password', false); } add_action('pre_get_posts', 'password_post_exclude_archive_posts'); |
記事一覧から保護中の記事が消えました。
一覧に含まれないので直接のURLを知らないユーザーはアクセスができません。
読者限定のコンテンツを作ったパスワード付きで公開するなどアイデア次第で活用方法はたくさんあるのでぜひご活用ください。
保護中の文言を削除する方法
パスワードをかけると上記のように表示されます。
この「保護中」と表示されるのをやめたいとか削除する方法があります。
この方法もさっきの項目と同じでテーマファイルのfunctions.phpを編集しますのでまず基本的な理解がない方には敷居の高い編集方法となります。
1 2 3 4 5 |
/* 保護中の文言を削除する方法 */ add_filter('protected_title_format', 'remove_protected'); function remove_protected($title) { return '%s'; } |
タイトルから「保護中」の文字がなくなりました。
保護中の文言のテキストを変更する方法
本文テキストの文字を変更してみようと思います。
1 2 3 4 5 6 7 8 9 10 |
/* 保護中の文言のテキストを変更 */ function my_password_form() { return 'ここに好きなテキストを入力します<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'); |
Cookieの期限を変える
Cookieの有効期限を変更方法を解説します。
このパスワード保護機能はデフォルト設定では、パスワードのCookie保存期限が10日に設定されています。
そのため、一度パスワード入力すると、10日間はパスワードの入力がなくても記事が表示されてしまいます。
そこで最後にこのCookie保存期限を短くする方法を説明します。
1 2 3 4 5 6 7 8 9 |
/* Cookieの期限を変える */ function custom_postpass_time() { require_once ABSPATH . 'wp-includes/class-phpass.php'; $hasher = new PasswordHash( 8, true ); setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + DAY_IN_SECONDS, COOKIEPATH ); wp_safe_redirect( wp_get_referer() ); exit(); } add_action( 'login_form_postpass', 'custom_postpass_time' ); |
上記コードの設定では、デフォルトで10日間の設定を1日に変更してます。
「DAY_IN_SECONDS」を「HOUR_IN_SECONDS」に変更すると1時間になります。
まとめ
「特定記事だけを限定公開にしたい」しかもプラグインを使うこともなく・・・
ってなると記事をパスワードで保護する方法が1番手っ取り早い方法です。
しかし、デフォルトのままだとちょっとブサイクな感じもします。
他社に差をつけるために独自のカスタマイズをしてみませんか?
パスワード保護コンテンツは、メルマガやステップメール読者をターゲットとした限定コンテンツとする使い方がベストだと思います。
また、気づきがあれば追記するかもしれません。
![]() |
くまはちLABのご利用ありがとうございます! |