Отображение количества результатов поиска

3 авг. 2013 г., 18:52:36
Просмотры: 53.4K
Голосов: 21

До сих пор я использовал следующий код для получения количества результатов при поиске и отображения этого числа.

<?php /* Подсчет результатов поиска */ $allsearch =& new WP_Query("s=$s&showposts=-1"); $count = $allsearch->post_count; echo $count . ' '; wp_reset_query(); ?>

Но этот код не кажется корректным. Он показывает следующую ошибку:

Устарело: Присваивание возвращаемого значения new по ссылке устарело

Может кто-нибудь подсказать правильный способ, как получить количество результатов поиска? Вышеуказанный код размещен в заголовке файла index.php темы внутри условного оператора для отображения различных заголовков в зависимости от типа страницы, на которой находится пользователь.

1
Комментарии

allsearch = new WP_Query без '&', чтобы избежать устаревшего предупреждения.

gmazzap gmazzap
3 авг. 2013 г. 19:04:41
Все ответы на вопрос 2
3
43

Если вы находитесь в шаблоне поиска, т.е. поисковый запрос является вашим основным запросом, то вы сможете получить результаты поиска из глобального объекта $wp_query без выполнения дополнительного запроса.

global $wp_query;
echo $wp_query->found_posts.' результатов найдено.';

Правка 1

Если вам нужно получить количество результатов вне контекста поиска, вы можете объединить оба метода для получения эффективного результата. Это не загрузит все записи, но позволит получить количество результатов поиска.

$allsearch = new WP_Query("s=$s&showposts=0"); 
echo $allsearch ->found_posts.' результатов найдено.';

Ваша ошибка

Ошибка, которую вы получаете, находится здесь

$allsearch =& new WP_Query("s=$s&showposts=-1");

Удалите символ "&" рядом со знаком равенства, чтобы избавиться от ошибки. В итоге код должен выглядеть так:

$allsearch = new WP_Query("s=$s&showposts=-1");
3 авг. 2013 г. 18:59:42
Комментарии

Вау, спасибо. Я тоже попробовал это, и это сработало: '<?php / Количество результатов поиска / $count = $wp_query->post_count; echo $count . ' '; wp_reset_query(); ?>'

Harish Chouhan Harish Chouhan
3 авг. 2013 г. 19:21:09

Хариш, твой $allsearch = new WP_Query("s=$s&showposts=0"); echo $allsearch ->found_posts.' results found.'; будет отображать только количество на текущей странице, а не общее. Например, он покажет только 10, даже если всего 20 записей.

Suyash Jain Suyash Jain
28 мая 2016 г. 11:01:41

Почему код работал раньше, а теперь не работает? Я убрал "&" после знака равенства, и он снова заработал.

Jornes Jornes
11 апр. 2020 г. 17:25:59
0

Возможно, будет полезно также поделиться этим, чтобы первый заголовок уведомлял пользователя, что результаты поиска найдены, а второй - сколько именно результатов найдено. Если найдено меньше 2 результатов, должно отображаться "Найден 1 результат", иначе "Найдено x результатов".

    <h2 class="blog_archive_heading">Результаты поиска по запросу '<?php the_search_query(); ?>'</h2>
<h3 class="blog_archive_heading"><?php
  global $wp_query;
  if($wp_query->found_posts < 2) {
    $result = "результат";
  } else {
    $result = "результатов";
  }
    echo $wp_query->found_posts . " " . $result . " найдено.";
    ?></h3>

Этот фрагмент кода находится в моем файле search.php.

Файл section-searchresults.php просто выводит найденные записи блога, соответствующие вашему запросу. Если ничего не найдено, будет выведено "Результатов не найдено".

21 сент. 2021 г. 08:42:13