35歳で会社を辞めて独立したまめのブログ

現役Webデザイナーがお答えします

WordPressでページにパスワードをかける最も簡単な方法

※当サイトはWeb広告を利用しています


WordPressでは、「パスワード保護」機能で投稿記事や固定ページに任意のパスワードを設定し、閲覧制限をかけることができます。

やり方はすごく簡単!

プラグインやBASIC認証より手軽に利用可能です。
使い道としては、例えば、メルマガやSNSの読者にパスワードを配布して特定のユーザーにしか見られないようなページを作るようなことが考えられますね。
この記事では、パスワード保護の設定と柔軟に対応できるよう、カスタマイズを行う方法も紹介します。

スポンサードリンク

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

では記事にパスワード保護を設定してみましょう。固定ページも同じ要領です。

設定場所

各記事の作成画面の「公開」を管理するところです。
記事は、投稿→新規追加より記事を作成しても良いですし、既存の記事にパスワード保護をかけることもできます。

公開状態を編集


公開状態の「編集」ボタンをクリックします。

その中の「パスワード」保護にチェックを入れます。
するとパスワードを入力できるボックスが表示されるので、任意のパスワードを設定し、OKをクリック。

最後に記事を「公開」して完了です。

表示確認


パスワード保護したページを開くと、まずパスワードを入力するボックスが表示されます。

先程、設定したパスワードを入力すると記事の内容が表示されます。

タイトルの先頭には「保護中」のテキストが表示されますが、消したい場合は、次のカスタマイズで説明します。

スポンサードリンク

カスタマイズ

デフォルトから、よりオリジナリティのあるパスワード保護を実現してみましょう。
function.phpは、外観→テーマ編集→function.phpで編集できます。

「保護中」を消す


保護中の文字を消したい場合は、function.phpに以下を記述します。

add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
       return '%s';
}

「保護中」を別の文字に変更する

Poeditを使って、wp-content/languages 内のja.poを編集します。
手順は、
PoeditのダウンロードページよりPoeditをダウンロードしてインストール。

wp-content/languages内のja.poとja.moファイルをサーバよりダウンロード。(必ずバックアップをとってください)

Poeditでja.poを開き、検索(ctrl+f)で、「保護中」のテキストを見つける。

「保護中」を任意のテキスト(会員限定、閲覧限定など)に変更し保存。

保存するとja.poと同時にja.moも生成されます。この2つのファイルをサーバに上書きアップロード。

これで完了です。「保護中」の文字が任意でつけたテキストに変更されます。

参考:パスワード設定後の「保護中」の文字変更 | 初心者のワードプレスの使い方

パスワード入力画面のテキストを変更する


パスワードを入力する場面の上記赤枠で記したテキストを変更するには、function.phpに以下を記述します。

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

<p>ここを任意の文章に変更できます。</p>のところを任意の文章に変更してください。

パスワードの入力をしなくてもいい期間を無効にする

一度パスワードを入力するとデフォルトで10日間はCookie保存されるので、パスワードの入力なしで見られるようになります。
10日間は長すぎるという場合は、このCookie保存の期間を無効にし、都度パスワードの入力が必要になるよう変更してみましょう。
function.phpに以下を記述します。

add_action('after_setup_theme', 'my_after_setup_theme' );
function my_after_setup_theme(){ 
    setcookie('wp-postpass_' . COOKIEHASH,  $_POST['post_password'],  0, COOKIEPATH);
}

0, COOKIEPATHの部分の0でクッキーを残さないようにしています。

参考:パスワード保護の投稿が一覧にでてこないようにする

クッキーの保存期間を30分間や1時間にしたい場合は以下の記事が参考になります。
参考:パスワード保護ページをカスタマイズ!カスタムフィールドでテキスト変更できるようにしたりする|てとぶろ

まとめ

ポピュラーな方法なので「パスワード保護 カスタマイズ」で検索すると他にもカスタマイズのヒントが見つけられるでしょう。

パスワード保護は、WordPressで最も手軽な閲覧制限のかけ方ではないでしょうか。