WordPressでパスワード保護を設定した場合、<?php the_content() ?>
で出力する部分は非表示になりますが、他の箇所はそのまま表示されます。
タイトルやアイキャッチなど本文以外にも表示させたくない場合はpost_password_required()
を使用します。
post_password_required()について
この関数は、投稿がパスワードを必要とするか否か、また正しいパスワードが入力されたか否かを確認します。
使い方
<?php post_password_required( $post ); />
パラメータ
$post
:投稿IDもしくは投稿オブジェクト
戻り値
false
パスワードが必要+パスワードが正しい
パスワードが不要
true
それ以外
パスワードは入力もしくはクッキーに保存されているものを使用します。
使用例
if文をつかって条件分岐させることで、<?php the_content() ?>
以外のコンテンツの表示・非表示をコントロールできます。例えば記事タイトルの表示も制限したい場合は次のように書くことができます。
<article>
<?php
if ( ! post_password_required( $post->ID ) ) {
?>
<header><?php the_title(); ?></header>
<?php
}
?>
<?php the_content(); ?>
</article>
注意点としては<? the_content(); ?>
もif文の中に入れてしまうと、パスワード入力ボックスが表示されなくなります。これはthe_content()
にパスワード入力ボックスを表示させる機能も含まれているためです。その用は場合は別途パスワード入力ボックスを表示させる処理を追加する必要があります。
といっても、get_the_password_form()
という関数が用意さっれているので簡単に実装することができます。例えば先ほどのソースでaricle
タグまでまとめて非表示にしたい場合は次のように書くことができます。
<?php
if ( ! post_password_required( $post->ID ) ) {
?>
<article>
<header><?php the_title(); ?></header>
<?php the_content(); ?>
</article>
<?php
} else {
?>
<?php echo get_the_password_form(); ?>
<?php
}
?>
この方法を知っておくと、パスワード保護ページで表示させたくないものを自由にコントロールでき、とても便利です。
コメント
この記事へのコメントはありません。