こんにちは、Ryohei(@ityryohei)です!

本記事では、WordPressで投稿のパスワード保護を有効にする方法をご紹介しています。テーマ開発者やカスタマイズをしている方に向けた内容になっています。

WordPressで投稿のパスワードが有効にならない……どうすればいいの?

上記の疑問にお答えします。

では、解説していきます。

パスワード保護に使用する関数

投稿や固定ページのパスワード保護には下記の関数を使用します。

  • post_password_required()
  • get_the_password_form()

それぞれ下記の処理を行います。

post_password_required()

投稿にパスワードが必要がどうかを判定する関数です。引数には投稿オブジェクトまたは投稿IDを指定します。返り値は真偽値(true|false)です。パスワード入力が不要であればfalseを、それ以外の場合はtrueを返します。

post password required()

get_the_password_form()

投稿に必要なパスワードを入力するフォームを取得します。パスワードを入力するフィールドと送信ボタンが表示されます。デザイン等はCSSで変更することができます。

get_the_password_form()

上記の関数を使用してパスワード保護を有効にすることができます。

パスワード保護を有効にする

では実際にパスワード保護を有効にします。

前項でご紹介したように投稿のパスワード保護を有効にするには、2つの関数をテンプレートファイル(single.phpやpage.php)に追加する必要があります。

全体を記載すると長くなってしまうため割愛しますが、コンテンツ部分にフォーカスすると下記のようになります。

<?php if(!post_password_required($post->ID)): ?>

    <!-- パスワード認証後に表示するコンテンツ -->
    <p>パスワード認証済みです。</p>
  
<?php else: ?>
<?php echo get_the_password_form(); ?>
<?php endif; ?>

上記を追加した状態で固定ページや投稿で、ステータスと公開状態→公開→パスワード保護で任意のパスワードを指定すると、投稿を開いた際にパスワードの入力が促されます。認証に成功すると条件分岐内のコンテンツ、上記例では「パスワード認証済みです。」が表示されます。

ここまでの内容でパスワード保護を有効にすることができます。

最後に

私が勤めているWeb制作会社では、既存のテーマを流用したサイト制作というのはほとんどなくて、基本的にクライアントの要望に合わせたオリジナルテーマを一から作成しています。そのため毎回必要最低限の機能だけを実装する結果となり、要件にない機能は実装しません。もちろんパスワード保護は最低限必要な機能に含まれるためテストの段階で確認して、実装されていなければ追加します。ただ何度かパスワード保護の実装を忘れた経験があるので、今後忘れないようにしよう!という決意代わりの投稿でした。

以上、WordPressで投稿のパスワード保護を有効にする方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。