Авг
13
26

Улучшаем страницу с результатами поиска в wordpress

поиск по сайтуФункция поиска на сайте — вещь определенно нужная, часто мы не уделяем ей должного внимания. Если у вас старый, массивный и большой проект, то найти нужную информацию там становится не такой простой задачей. Для специализированный сайтов на различных CMS поиск может быть не совсем тривиальной задачей, требующей дополнительной установки. К счастью, шалбонах wordpress данная сложность попросту ликвидирована — наверное 99% дизайнов имеют в своей структуре работающий поиск — вам остается лишь активировать тот или иной шаблон для блога.

Обновление 10.01.2020: дополнительно можете глянуть более свежую статью про хаки для исключения страниц и категорий из поиска (там же есть решение и для кастомных типов постов).

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

Как правило внешний вид страницы поиска задается в файле шаблона search.php. Открываем его и, после внимательного изучения, аккуратно добавляем туда код из файла архивов archive.php. Таким образом, настроив единственный раз внешний вид постов на главной, страницах тегов и категорий wordpress я достаточно легко внедряю его и для поиска.

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

<div class="entry">Для вашего поискового запроса "<?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); _e('<span class="search-terms">'); echo $key; _e('"</span>'); _e(' найдено '); echo $count . ' '; _e('статьи. '); wp_reset_query(); ?></div>

В результате чего на странице результатов поиска появится надпись — Для вашего поискового запроса «ключевое слово» найдено 29 статьи. Текст, понятное дело, можно изменять так, как вам будет угодно, код в свою очередь определяет какой запрос вы ввели в форме поиска и сколько результатов для него было получено.

В одном из блогов я нашел еще хак для страницы поиска wordpress. Он позволяет «подсвечивать» слова, которые вы искали в результатах поиска. Для этого в файле search.php находим строку  с функцией  the_title, которая по умолчанию будет заключена в код типа этого:

<h3 id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3>

Так вот ее нужно заменить на

<?php echo $title; ?>

Но перед этим вставить следующую строку:

<?php $title = get_the_title(); $keys= explode(" ",$s); $title = preg_replace('/('.implode('|', $keys) .')/iu', '<strong class="search-excerpt">\0</strong>', $title); ?>

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

Пример работы когда на сайте я так и не увидел, но судя по нему, выделение применяется только к заголовку. В принципе, то же самое можно сделать и с текстом анонса. Более того, существуют специальные плагины для этих целей. В данном случае использование wordpress плагина позволит получать подсветку поисковых слов даже после смены шаблона, куда не придется в очередной раз вносить правки.

В любом случае все эти правки вы можете и не использовать — все зависит от личных пожеланий и предпочтений. Хотя я бы также рекомендовал обратить внимание на пользовательский поиск Google или (Google Custom Search), который не только позволит реализовать какие-то дополнительные возможности поиска, но позволит получить максимально стандартный его вид и даже немного на этом заработать через Google Adsense. Собственно на WordPress inside вы можете видеть пример его реализации — меня лично все более чем устраивает. К тому же это позволило объединить поиск по данному блогу и Tod’s Blog, а я в свою очередь размещаю не совместить ли мне информацию со всех блогов, тематика то у них почти одинаковая — интернет.

P.S. Постовой. Теперь купить в интернете контактные линзы стало гораздо проще, доставка по Украине и Киеву.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 10, средний балл: 4,20 из 7)
Загрузка...

категория Категории: Возможности; Хаки и секреты;
теги Теги: , , , , , .

комментариев 26 к статье “Улучшаем страницу с результатами поиска в wordpress”

  • Андрей   15.08.2010

    Спасибо за инфу Tod! Буду пробовать настраивать.

  • Сергей   01.11.2010

    Интересные решения, довольно полезные. Хотя сам поиск в wordpress не очень нравится, ищет странно и не всегда находит даже по прямому запросу + выдает ссылки на страницы, где такого слова просто нет.

  • Tod   01.11.2010

    Сергей, потому я и рекомендую использовать «пользовательский поиск Google», хотя он ищет по проиндексированным страницам, зато делает это весьма качественно.

  • Сергей   01.11.2010

    У меня с индексацией в гугле не все гуд) Относительно, конечно. Да и посетители не думаю, что часто пользуются поиском. Я вот очень редко, ибо в блогах иду примерно так — страница входа + похожие записи + выход)

  • Евгений Воробьев   07.12.2010

    А у меня ширина на сайте 550 пикселей…а в гугле минимум нужно 700. И как это исправить?

  • Tod   08.12.2010

    Евгений, кто сказал, что в google нужно именно 700? Там можно «пошаманить» со стилями оформления и задать любую ширину, у меня в этом блоге ведь тоже не 700, а 550 где-то.

  • Евгений Воробьев   08.12.2010

    Ну странно…там вроде написано так.
    Нужно поробовать!)

  • Дмитрий   21.10.2011

    Здравствуйте! Подскажите пожалуйста, возможно ли из результатов поиска исключить отображение страниц….?

  • Tod   23.10.2011

    Дмитрий, не знаю, а зачем это нужно? Если человек не нашел нужные ответы на первой странице, то логично что захочет пройти дальше, а тут бац и нет страниц)

  • Дмитрий   23.10.2011

    Дело в том, что в моем блоге результаты поиска выдают страницы, где представлена часть текста, на которой находится баннер гуглаАдсенс. Соответственно отображает часть скрипа гугла в ХТМЛ виде. Не красиво выглядит…
    Ну и на этом спасибо! Кстати очень полезный пост!

  • Tod   24.10.2011

    Дмитрий, вообще код гуглАдсенс нужно добавлять в файл шаблона, а не саму запись блога. Тогда в тексте не будет лишнего HTML.

  • Эльмира   12.03.2012

    Спасибо за информацию! Очень полезные советы для начинающих :)

  • Дмитрий   26.04.2012

    Добрый день!
    Много искал по интернету решение вопроса обрезки сообщений, но только вы затронули эту тему. У меня шаблон smartone и при поиске либо при выборе категории все посты обрезаются, пропадают картинки и все такое. У меня сообщения обрезаются тегом more, мне и нужно чтобы все сообщения точно так же отображались и при поиске и при выводе категорий. Я в программировании не силен и ваши слова мне мало чем помогли:
    «Как правило внешний вид страницы поиска задается в файле шаблона search.php. Открываем его и, после внимательного изучения, аккуратно добавляем туда код из файла архивов archive.php.»
    Можно по конкретнее что, откуда и куда вставлять.
    Заранее спасибо.

  • Tod   26.04.2012

    Дмитрий, структура файла search.php похожа на archive.php — в обоих выводится список сообщений, только для первого он зависит от результатов поиска. На сам формат отображения постов можно влиять, позаимствовав код из archive.php или index.php, то есть вывод заголовков, картинок и т.п.

  • Дмитрий   26.04.2012

    Я вот тут покопался и нашел в файле functions.php и нашел там следующую запись:

    function smartone_excerpt_length( $length ) {
    return 40;
    }
    add_filter( ‘excerpt_length’, ‘smartone_excerpt_length’ );

    function smartone_continue_reading_link() {
    return ‘ ‘ . __( ‘Читать полностью →’, ‘smartone’ ) . ‘‘;
    }

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

  • Tod   27.04.2012

    Дмитрий, этот код, насколько я понимаю, во-первых, указывал сколько символов будет выводится в кратком сообщение (40), а во вторых создает какую-то специальную кнопку «читать далее», может название статьи добавляет.

  • Ольга   20.02.2013

    Здравствуйте. Вы не знаете как сделать в поиске так, чтобы он искал только название поста. А то у меня вводишь в поле НЕО и он выдает все подряд — http://xn--80apij1f.su/ а у меня на сайте все нужные запросы поиска стоят в названии поста. Поиск по контенту не нужен

  • Tod   20.02.2013

    Ольга, для таких целей скорее всего нужно искать другой плагин, стандартный поиск ищет по всему подряд.

  • Андрей   27.12.2014

    Как можно запретить выдачу постов из одной рубрики?

  • Tod   27.12.2014

    Андрей, с помощью базового поиска, скорее всего, никак. Можно поискать плагина поисков пофункциональнее или попробовать Google Custom Search.

  • Пётр   27.03.2016

    Добрый день!
    Может кто подскажет как реализовать поиск по конкретной странице??? Что то наподобие браузерного ctrl+F ? На странице есть список городов, чтобы пользователю не листать всю страницу быстро ввести сверху в поиске свой город, и он бы подсветился.

  • Tod   28.03.2016

    Пётр, нужно, наверное, гуглить в сторону какого-то ajax поиска дабы страница не перегружалась. Можно попробовать разбить список на колонки или сделать ссылки-переходы на блоки городов по алфавиту — типа города на А, на Б и т.п. При клике пользователь попадает в соответствующее место страницы. Это делается через якоря. Еще на ум приходит реализация в виде глоссария — тоже нужно гуглить модули.

  • Иван   14.07.2019

    Есть ещё классный сниппет для поиска, если пользователь ввёл запрос на неправильной раскладке: вариант 7

  • Tod   14.07.2019

    Иван, спасибо за дополнение статьи, в некоторых случаях этот сниппет действительно может пригодиться.

  • Вова   11.01.2020

    Скажите пожалуйста, как быть, если в поисковой выдаче страницы отображаются полностью и не в попад, а не анонсами, как на главной. Что нужно сделать, чтоб это исправить, плагин ни один не помогает.

  • Tod   12.01.2020

    Вова, если речь идет о «поисковой выдачи Google», то это никаким плагином не подправить. Возможно, в настройках поиска в Гугл-аккаунте есть какие-то настройки, но там, наверное, что цвет текста или шрифты.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости