2016-11-15 2 views
0

У меня есть пользовательский тип сообщения, который я просматриваю с помощью пользовательского запроса. Я хочу вывести сообщение, если результатов слишком много (это отлично работает). Но проблема в том, что, когда вы впервые перешли на страницу и никакого поиска не было выполнено, я не хочу, чтобы это сообщение появилось. Как я могу остановить его появление, когда поиск не был выполнен?Выводить текст только при выполнении поиска

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

@RazibAlMamun Когда они впервые попадают на страницу, когда форма поиска не заполняется и поиск не нажимается. – Rob

ответ

0

Просто измените условие:

<?php if($the_query->post_count > 20) { ?> 

С:

<?php if($the_query->post_count > 20 && is_search()) { ?> 

is_search() возвращение истинной, если какое-либо условие поиска отправляется на текущий WP_Query.

+0

Это, похоже, не работает, оно не отображает текст. Имеет ли значение, что это настраиваемый тип сообщения? – Rob

+0

Это не так - это по-прежнему поиск, это просто на другой сфере. Не могли бы вы попытаться использовать 'isset ($ args ['s'])' вместо 'is_search()'? Я думаю, 'is_search' работает не так, как ожидалось, потому что вы используете новый объект' WP_Query'. – vard

+0

Не повезло с этим, это сложно! – Rob

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 это рассчитывать только сообщения на первой странице.

Смежные вопросы