こんにちは
ループの中で
<?php
while ( have_posts() ) : the_post();
if(empty($post->post_password)){
echo get_the_title()."<br>";
}
endwhile;
?>
等として、wp-postsテーブルの post_password フィールドの値を確認しながらループするという事でどうでしょうか
nobitaさん、ありがとうございます。
教えていただいたコードを試してみたところ、除外は出来たのですが
パスワード保護の記事数分、表示件数が減ってしまいます。
(新着5件のうち、パスワード保護2件→リストに表示されるのは3件)
パスワード保護の投稿を取り除いた上で、posts_per_pageで指定した数を表示できるようにする、という方法はありますでしょうか?
ご助言をよろしくお願い致します。
こんにちは
未検証ですけど、ループ内で処理しているので、やはりループ内で
<?php
$i = 0;
$result = "";
while ( have_posts() ) : the_post();
if(empty($post->post_password) and $i < 5){
$result .= get_the_title()."<br>";
$i++;
}else{
echo $result;
break;
}
endwhile;
?>
functions.php で
function my_posts_where($where){
$where .= " AND post_password = ''";
return $where;
}
テンプレートで
add_filter('posts_where','my_posts_where');
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
query_posts('post_type=post&cat=10&posts_per_page=5&paged='.$paged);
remove_filter('posts_where','my_posts_where');
でうまくいきそうです。
function my_posts_where($where){
global $wpdb;
$where .= " AND $wpdb->posts.post_password = ''";
return $where;
}
こっちの方がいいかもしれません。
nobitaさん、pluto1234さん、ありがとうございます。
おかげさまで希望通りのリスト表示が出来ました。
感謝です!