我有一个自定义帖子类型,我正在使用自定义查询进行搜索。如果结果太多(我运行正常),我想输出一条消息。但我遇到的问题是,当您第一次转到页面并且没有执行任何搜索时,我不希望出现该消息。如果没有进行搜索,我怎么能阻止它出现?
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => 5,
'post_type' => 'researchdatabase',
'post_status' => 'publish',
'paged' => $paged
);
if($searchTerm != "") {
$args['s'] = $searchTerm;
}
$the_query = new WP_Query($args);
if ($the_query->have_posts()) {
$counter = 1; ?>
<p>
<b><?php echo $the_query->post_count; ?> research items</b>
<?php if($the_query->post_count > 20) { ?>
<br /><span class="research-alert"><b>Refine your search criteria to see fewer results.</b></span>
<?php } ?>
</p>
<hr />
<br />
<?php while ($the_query->have_posts()) { $the_query->the_post(); ?>
<?php // output results ?>
<?php $counter++;
} // end while
// reset post data
wp_reset_postdata();
} else {
echo 'No results';
} // end if
?>
答案 0 :(得分:0)
只需更改条件:
<?php if($the_query->post_count > 20) { ?>
使用:
<?php if($the_query->post_count > 20 && is_search()) { ?>
如果为当前WP_Query
发送了任何搜索字词,则 is_search()
返回true。
答案 1 :(得分:0)
“未执行任何搜索”等于“查询中没有搜索字词”,为什么不首先检查搜索字词?
if(!empty($searchTerm)) {
$args = array(
's' => $searchTerm
'posts_per_page' => 5,
'post_type' => 'researchdatabase',
'post_status' => 'publish',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
);
$the_query = new WP_Query($args);
// Your code.
}
顺便说一句:如果你想显示搜索结果的总数,你应该使用$the_query->found_posts
而不是$the_query->post_count
它只计算首页上的帖子。