post_password_required()

post_password_required()
目次

post_password_required()とは?

post_password_required() は、現在の投稿またはページがパスワード保護されていて、なおかつユーザーがまだ正しいパスワードを入力していない場合に true を返す関数です。

つまり、この関数を使うことで「まだ閲覧を許可されていない投稿かどうか」を判別できます。

状況post_password_required() の返り値
投稿がパスワード保護されていて、ユーザーが未入力true
投稿がパスワード保護されているが、ユーザーが正しいパスワードを入力済みfalse
投稿がパスワード保護されていないfalse

post_password_required()の関数の構文

post_password_required( int|WP_Post|null $post = null ): bool

post_password_required()の引数の詳細

引数説明
$postint / WP_Post / null対象の投稿ID、投稿オブジェクト、または null(省略時は現在の投稿)

post_password_required()の戻り値

  • true:パスワードが必要(まだ入力されていない)
  • false:パスワードは不要、またはすでに入力されている

post_password_required()の使用例(基本)

投稿本文を表示する前に、パスワードのチェックを行いたい場合:

<?php if ( post_password_required() ) : ?>
  <p>この投稿はパスワードで保護されています。正しいパスワードを入力してください。</p>
<?php else : ?>
  <div class="entry-content">
    <?php the_content(); ?>
  </div>
<?php endif; ?>

このようにすれば、パスワードが入力されるまで本文が表示されないように制御できます。

WordPressのパスワード保護とは?

WordPress では、投稿・固定ページに「パスワード保護」を設定することで、特定の閲覧者のみに公開する機能があります。

設定手順(管理画面)

  1. 投稿を編集画面で開く
  2. 「公開状態」の設定を「パスワード保護」に変更
  3. パスワードを入力して保存

関連する動作

  • パスワード保護された投稿にアクセスすると、自動的に WordPress が用意したパスワード入力フォームが表示されます。
  • パスワードが正しく入力されると、その投稿の本文や添付ファイルなどが閲覧可能になります。
  • 正しく入力されたパスワード情報はクッキーに保存され、再入力なしで同じブラウザからアクセスできます(一定期間)。

応用例:カスタムテンプレートでの活用

たとえば、ギャラリー表示や商品ページなどで「特定のユーザーだけに見せたい情報」を保護したい場合:

<?php if ( post_password_required() ) : ?>
  <?php echo get_the_password_form(); ?>
<?php else : ?>
  <div class="private-content">
    <?php the_content(); ?>
  </div>
<?php endif; ?>

get_the_password_form() を使うと、WordPress 標準のパスワード入力フォームが表示されます。

複数投稿のループ内で使う例

<?php while ( have_posts() ) : the_post(); ?>
  <article <?php post_class(); ?>>
    <h2><?php the_title(); ?></h2>
    
    <?php if ( post_password_required() ) : ?>
      <div class="notice"><?php echo get_the_password_form(); ?></div>
    <?php else : ?>
      <div class="content"><?php the_content(); ?></div>
    <?php endif; ?>
    
  </article>
<?php endwhile; ?>

これにより、各投稿ごとにパスワード入力が必要かどうかをチェックできます。

投稿IDを指定して使う

現在の投稿とは別の投稿について確認したい場合、投稿IDや WP_Post オブジェクトを渡します。

$post_id = 42;
if ( post_password_required( $post_id ) ) {
  echo 'この投稿は保護されています。';
}

get_the_password_form() との関係

関数名役割
post_password_required()パスワードが必要かを判定する
get_the_password_form()パスワード入力フォームのHTMLを取得する

この2つを組み合わせることで、表示制御が簡単に実装できます。

フィルターを使って独自フォームを表示したい場合

add_filter('the_password_form', 'my_custom_password_form');
function my_custom_password_form() {
  return '<form method="post">あなたのパスワード:<input name="post_password" type="password"><input type="submit" value="確認"></form>';
}

post_password_required()の注意点・落とし穴

  • パスワードは投稿ごとに設定される。同じパスワードでも投稿間で共有されるわけではない。
  • 一度入力しても、ブラウザを変えたりクッキーを削除したりすると再度入力が必要
  • 関数は投稿や固定ページが対象。カテゴリページやカスタムタクソノミーでは意味を持たない。

post_password_required()のまとめ

項目内容
関数名post_password_required()
主な用途投稿がパスワード保護されているかどうかを判定
戻り値true(保護中)、false(非保護 or 入力済)
引数投稿ID、WP_Post オブジェクト(省略可)
活用場面コンテンツの出し分け、カスタムテンプレートでの利用
関連関数get_the_password_form(), the_password_form()

post_password_required() は、WordPressのパスワード保護機能を活用するうえで欠かせない関数です。

シンプルな使い方ながら、「ログイン不要で一部の閲覧を制限したい」シーンで非常に役立ちます。
独自の表示制御やフォームデザインをしたいときにも、この関数を活用することで柔軟に対応できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次