仅在搜索运行时输出文本

时间:2016-11-15 16:08:39

标签: php wordpress

我有一个自定义帖子类型,我正在使用自定义查询进行搜索。如果结果太多(我运行正常),我想输出一条消息。但我遇到的问题是,当您第一次转到页面并且没有执行任何搜索时,我不希望出现该消息。如果没有进行搜索,我怎么能阻止它出现?

<?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
?>

2 个答案:

答案 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它只计算首页上的帖子。