【WordPress】投稿・固定ページをパスワードで保護する方法

Web制作

はじめに

WordPress では、特定の投稿や固定ページに対してパスワードを設定して、そのページの閲覧を制限することができます。

これは WordPress の標準機能で設定することができます。

パスワード保護の設定方法

基本設定

パスワード保護の設定は、対象の投稿または固定ページの編集画面にて行います。

[表示状態] 項目の設定値部分をクリックし、表示されるリストの中から [パスワード保護] を選択した上でパスワードを入力します。

この設定を行うと、当該記事を表示した際に以下のようなパスワード入力画面が表示されます。

上の画面で正しいパスワードを入力して確定した場合のみ、当該記事を表示することができます。

タイトルに付加する文字列の変更

デフォルトでは保護ページのタイトルの先頭に「保護中: 」の文字列が付加されますが、この文字列を変更することができます。

変更するためには WordPress のテーマエディターにて functions.php を編集します。

方法としては、以下の関数を追記します。

function edit_protected_word () {
return '保護中:%s';
}
add_filter('protected_title_format','edit_protected_word');

上の 2 行目の「保護中:」と記述されている部分を任意の文字列に変更します。

本文に表示する文字列の変更

デフォルトでは保護ページの本文には「このコンテンツはパスワードで保護されています。閲覧には以下にパスワードを入力してください。」と表示されますが、この文字列を変更することができます。

変更するためには WordPress のテーマエディターにて functions.php を編集します。

方法としては、以下の関数を追記します。

function password_form_kai() {
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', 'password_form_kai');

上の 3 行目の「ここに入力した文字列が表示されます」の部分を任意の文字列に変更します。

パスワード保護に関する注意点

複数のページで同じパスワードを設定した場合

複数の投稿・固定ページに対して同じパスワードを設定した場合、いずれか一つのページでパスワード認証に成功すると他のページについてもパスワード認証が成功したとみなされ閲覧が可能となります。

異なるパスワードを設定しているページについては、別途パスワード認証が必要です。

つまり、パスワード認証はページ別に行われるのではなく、設定しているパスワード別に行われることになります。

パスワード認証後の有効期間について

一度パスワード認証に成功すると、一定期間はページの再読み込みをした際にパスワード認証をせずにページを閲覧することができる状態になります。(Cookie が保存されるため)

この期間はデフォルトでは 10 日間です。

この期間を変更するためには、WordPress のテーマエディターにて functions.php を編集する必要があります。

方法としては、以下の関数を追記します。(有効期間を 600秒=10分 に変更する例です)

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() + 600, COOKIEPATH );
    wp_safe_redirect( wp_get_referer() );
    exit();
}
add_action( 'login_form_postpass', 'custom_postpass_time' );

以下の行の「600」と記述している部分で期間を指定します。

    setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + 600, COOKIEPATH );

数値で指定した場合は「秒」単位の意味となります。また以下の指定方法も可能です。

  • MINUTE_IN_SECONDS : 1分
  • HOUR_IN_SECONDS : 60分
  • DAY_IN_SECONDS : 1日
  • WEEK_IN_SECONDS : 7日
  • MONTH_IN_SECONDS : 30日
  • YEAR_IN_SECONDS : 1年

パスワード一括変更プラグイン

Replace Protected Password というプラグインを使用することでパスワード保護で設定しているパスワードについて、そのパスワードを設定している投稿・固定ページのパスワード設定を一括で変更することができます。

Replace Protected Password のインストール

以下のページからプラグインファイルをダウンロードします。

Replace Protected Password
This plugin allows you to update the password for the post or page at a time.

以下の [Download] をクリックするとダウンロードできます。

ダウンロードした replace-protected-password.x.x.x.zip を、WordPress のプラグイン追加画面の以下赤枠部分へドラッグアンドドロップします。

次に [今すぐインストール] をクリックします。

インストールできたらプラグイン一覧画面で Replace Protected Password を有効化します。

[設定] メニュー内に Replace Protected Password が追加されます。

Replace Protected Password 設定画面にてパスワード設定の一括変更ができます。

パスワード設定の変更を行う場合は、現在のパスワード欄で対象パスワードを指定した上で新しいパスワードを入力し [更新] をクリックします。

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