所以我有一个自定义的wordpress搜索页面,将结果分组到自定义帖子类型标题中。
这样可行但如果其中没有帖子,它仍会显示帖子类型。
我该怎么做才能查看该部分是否有帖子,如果没有,则隐藏该部分。
注意:if(!empty($ hasposts))当前为每个支票返回FULL,因为帖子类型有帖子,但它们不属于搜索结果。
<?php
if( have_posts() ){
//Define post types:
$types = array('post', 'promo_offers', 'product_manuals', 'support_posts','product');
foreach( $types as $type ){
// RETURN EMPTY IF THE RESLUTS FOR THE POST TYPE IS EMPTY
$hasposts = have_posts($type);
if( !empty ( $hasposts ) ) { echo '<div>FULL!</div>';} else {echo '<div>EMPTY!</div>';}
//BELOW CODE WORKS AS INTENDED
echo 'your container opens here for ' . $type;
echo '<ul>';
while( have_posts() ){
the_post();
if( $type == get_post_type() ){
echo '<li>';
the_title();
echo '</li>';
}
}
echo '</ul>';
rewind_posts();
echo 'your container closes here for ' . $type;
}
}
?>
答案 0 :(得分:0)
所以我的理解是,have_posts()没有参数,实际上我很好奇你打电话时会发生什么
$hasposts = have_posts($type);
您的函数多次遍历所有帖子,但只显示那些类型为$ type的帖子。关键是has_posts()每次都返回true,因为它引用了所有帖子,而不仅仅是指定类型。
所以我认为你需要的是对每种类型进行单独的查询,如下所示:
foreach( $types as $type ) {
query_posts("post_type=$type");
while (have_posts() ) {
//now this should only happen if the specific type has posts in it...
}
}