
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()の引数の詳細
引数 | 型 | 説明 |
---|---|---|
$post | int / 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 では、投稿・固定ページに「パスワード保護」を設定することで、特定の閲覧者のみに公開する機能があります。
設定手順(管理画面)
- 投稿を編集画面で開く
- 「公開状態」の設定を「パスワード保護」に変更
- パスワードを入力して保存
関連する動作
- パスワード保護された投稿にアクセスすると、自動的に 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のパスワード保護機能を活用するうえで欠かせない関数です。
シンプルな使い方ながら、「ログイン不要で一部の閲覧を制限したい」シーンで非常に役立ちます。
独自の表示制御やフォームデザインをしたいときにも、この関数を活用することで柔軟に対応できます。