Улучшенная выдача результатов поиска

Для блога будет полезно иметь отдельную страницу для отображения результатов поиска. Обычно эта страница имеет название файла search.php.

Меняем стандартный заголовок

Ниже представлен код для улучшенной выдачи результатов, а именно в заголовке говорится какой поисковый запрос ввёл пользователь и сколько совпадений найдено по данному запросу. Для начала найдем место, где выводится заголовок, и заменим код заголовка этим:


<h3>Результаты поиска для
   <?php
     $allsearch = &new WP_Query("s=$s&showposts=-1");
     $key = esc_html($s);
     $count = $allsearch->post_count;
     echo '<span style="color:#820101;">"'.$key.'"</span><br />Количество соответствий: ', $count;
     wp_reset_query();
   ?>
</h3>


Далее следует стандартный цикл вывода статей. После него необходимо установить действия на случай не нахождения соответствующих статей:


<?php else : ?>
<h3>По запросу
   <?php
     $allsearch = &new WP_Query("s=$s&showposts=-1");
     $key = esc_html($s);
     $count = $allsearch->post_count;
     echo '<span style="color:#820101;">"'.$key.'"</span><br />Количество соответствий: ', $count;
     wp_reset_query();
  ?>
</h3>
<hr />
<h1>По запросу ничего не найдено</h2>
<p>Извините, но то что вы ищите находится не здесь. Проверьте правильность ввода в адресной строке, либо попытайтесь найти это с помощью формы поиска ниже</p>

<?php endif; ?>


Разбор кода

Немного объясню самую главную строку, из за которой и открывался топик:
  • $allsearch — переменная которая хранит в себе поисковый запрос и запрос к базе на вывод всех найденных по запросу статей;
  • $key — в неё заносится запрос, обработанный функцией esc_html(), т.е. все специальные символы преобразованы в HTML сущности;
  • $count — количество найденных записей по запросу;

В случае не нахождения ни одной подходящей запросу статьи, на экран выводится сообщение:

По запросу "(здесь будет запрос)"
Количество совпадений: 0

И дальше просьба осуществить поиск заново. Как все догадались это только основная часть кода страницы, не хватает лишь самой структуры сайта, подключения шапки, сайдбара и подвала (если требуется) и т.д… Это уже делается индивидуально под каждый сайт.


5 комментариев

avatar
а что делать, если у меня выдается страница с рез-ми поиска на блоге (sidash.ru) но если постов несколько, не удается перейти на сл.страницу. то есть навигация в найденных страницах не работает…
avatar
Навигацию выводишь плагином или стандартными функциями?
avatar
стандартными ф-циями. да и причем такими же, как и на других страницах(
плагином будет работать, но меня пока интересует вариант БЕЗ плагина
avatar
у тебя на цифрах, которые ведут на следующие страницы поисковой выдачи блога, стоит один и тот же адрес у ссылок. Можешь файлы functions.php и search.php как то показать? можешь в личку кинуть
avatar
сейчас напишу
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.