カスタムフィールドを表示するようにソースを記述していると思われますが、その記述場所に問題があるのではないでしょうか。保護されない領域に表示用ソースを記述しているとか?
shokun0803様
ご回答頂きまして、ありがとうございました。
私の方でいろいろと「保護されない領域」というのを調べてみましたが、
いまいちピンとくるソースが見つけられませんでした。
テンプレート内には以下のように記述しております。
〜省略〜
<?php if (have_posts()):while(have_posts()):the_post(); ?>
<?php the_content(); ?>
<?php echo get_post_meta($post->ID,’カスタムフィールド名’,TRUE); ?>
<?php endwhile; endif; ?>
〜省略〜
そうしますと、<?php the_content(); ?>が記述されている箇所に「パスワードで保護されています」と表示されますが、それ以下にありますカスタムフィールドの領域はそのまま表示されてしまいます。
例えば、上記のテンプレートの記述以外に何かプラスする要素はあるのでしょうか?
post_password_requiredを用いてif文で何とか、と思ってもみましたが、
どうも上手くいきません。
調べてみました。パスワード保護自体を使ったことがなかったので今まで気付きませんでしたが、パスワードで保護されるのは本文 (post_content) だけのようですね。カスタムフィールド値なども保護したい場合には、注意が必要そうです。
post_password_required() を使うという点は正解のようです。注意すべきは、この関数が true を返すのは、投稿がパスワード保護されており、かつパスワードが未入力または間違っている場合である点です。ややこしいですが、反対の意味を考えてみると false を返す場合というのは、投稿がパスワード保護されていないか、パスワードが正しく、その値がクッキーに保存されている場合になります。
従って、 post_password_required() が false を返す (=パスワードが必要ない) 場合に echo するようコードを記述すれば OK のはずです。
<?php if ( !post_password_required( $post->ID ) ) : ?>
<?php echo get_post_meta( $post->ID, 'key', true ); ?>
<?php endif; ?>
mizube様
ご返信頂きまして、ありがとうございます。
お教え頂きました内容にて、試してみましたところ、
無事にカスタムフィールドも含めてパスワード保護の対象となりました。
お忙しいところお付き合い頂きまして、ありがとうございました。