Улучшаем страницу с результатами поиска в 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. Постовой. Теперь купить в интернете контактные линзы стало гораздо проще, доставка по Украине и Киеву.
комментариев 26 к статье “Улучшаем страницу с результатами поиска в wordpress”
Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!
Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:
- Як сховати відсутні товари в Woocommerce шорткодах та схожих товарах
- Сервіс AdMaven + плагін для монетизації трафіка на WordPress сайтах
- Плагіни для створення стрічки новин з біжучим рядком в WordPress
- Як змінити розміщення кнопки оформлення замовлення в WooCommerce
- Плагін WHWS Display In Stock Products First – відображення товарів в наявності першими
- Підписка MonsterONE: чи варто використовувати цей сервіс у 2023 році? (+5 продуктів, які треба скачати в першу чергу)
- Онлайн генератор ссылок на мессенджеры для WordPress и не только
- WooCommerce (46)
- Безопасность (12)
- Видео (6)
- Виджеты (28)
- Возможности (141)
- Вопрос-ответ (6)
- Начинающим (52)
- Новости (46)
- Оптимизация (23)
- Плагины (246)
- Сервисы (87)
- Хаки и секреты (87)
- Шаблоны (45)
- Записи и посты wordpress, оформление записи (5,91 из 7, голосов - 47)
- Проблема с адаптивными изображениями в Gutenberg редакторе WordPress (3,93 из 7, голосов - 44)
- Умный копирайт в footer.php для wordpress (5,63 из 7, голосов - 30)
- Обновление плагинов и тем в WordPress: автоматическое, через FTP, скрытие уведомлений (5,19 из 7, голосов - 31)
- Polylang — плагин для мультиязычных сайтов на нескольких языках в WordPress (4,42 из 7, голосов - 31)
- Плагин TinyMCE Advanced – wordpress текстовый редактор (6,35 из 7, голосов - 20)
- Рубрики и категории wordpress, функция wp_list_categories (6,05 из 7, голосов - 20)
- Дизайн Мания - о веб-дизайне и не только.
- Tod's Blog - все про заработок онлайн.
- Вебдванольные заметки - обзоры веб-сервисов.
- Советы по выбору холодильника LG с технологией No Frost
- Зачем нужны Wi-Fi ретрансляторы и как выбрать подходящую модель
- Введение в онлайн-казино Slotor777: многообразие игр и привлекательные бонусы
- Необходимость использования облачного хранилища в наше время, что важно и как выгодно?
- Спрощення процесу звітності за допомогою програми BAS Бухгалтерія
- Технологія підключення інтернету GPON та її переваги
- За що гравці найбільше цінують Lineage 2
- Для каких проектов нужна аренда виртуального сервера и что такое VPS
Спасибо за инфу Tod! Буду пробовать настраивать.
Интересные решения, довольно полезные. Хотя сам поиск в wordpress не очень нравится, ищет странно и не всегда находит даже по прямому запросу + выдает ссылки на страницы, где такого слова просто нет.
Сергей, потому я и рекомендую использовать «пользовательский поиск Google», хотя он ищет по проиндексированным страницам, зато делает это весьма качественно.
У меня с индексацией в гугле не все гуд) Относительно, конечно. Да и посетители не думаю, что часто пользуются поиском. Я вот очень редко, ибо в блогах иду примерно так — страница входа + похожие записи + выход)
А у меня ширина на сайте 550 пикселей…а в гугле минимум нужно 700. И как это исправить?
Евгений, кто сказал, что в google нужно именно 700? Там можно «пошаманить» со стилями оформления и задать любую ширину, у меня в этом блоге ведь тоже не 700, а 550 где-то.
Ну странно…там вроде написано так.
Нужно поробовать!)
Здравствуйте! Подскажите пожалуйста, возможно ли из результатов поиска исключить отображение страниц….?
Дмитрий, не знаю, а зачем это нужно? Если человек не нашел нужные ответы на первой странице, то логично что захочет пройти дальше, а тут бац и нет страниц)
Дело в том, что в моем блоге результаты поиска выдают страницы, где представлена часть текста, на которой находится баннер гуглаАдсенс. Соответственно отображает часть скрипа гугла в ХТМЛ виде. Не красиво выглядит…
Ну и на этом спасибо! Кстати очень полезный пост!
Дмитрий, вообще код гуглАдсенс нужно добавлять в файл шаблона, а не саму запись блога. Тогда в тексте не будет лишнего HTML.
Спасибо за информацию! Очень полезные советы для начинающих :)
Добрый день!
Много искал по интернету решение вопроса обрезки сообщений, но только вы затронули эту тему. У меня шаблон smartone и при поиске либо при выборе категории все посты обрезаются, пропадают картинки и все такое. У меня сообщения обрезаются тегом more, мне и нужно чтобы все сообщения точно так же отображались и при поиске и при выводе категорий. Я в программировании не силен и ваши слова мне мало чем помогли:
«Как правило внешний вид страницы поиска задается в файле шаблона search.php. Открываем его и, после внимательного изучения, аккуратно добавляем туда код из файла архивов archive.php.»
Можно по конкретнее что, откуда и куда вставлять.
Заранее спасибо.
Дмитрий, структура файла search.php похожа на archive.php — в обоих выводится список сообщений, только для первого он зависит от результатов поиска. На сам формат отображения постов можно влиять, позаимствовав код из archive.php или index.php, то есть вывод заголовков, картинок и т.п.
Я вот тут покопался и нашел в файле functions.php и нашел там следующую запись:
function smartone_excerpt_length( $length ) {
return 40;
}
add_filter( ‘excerpt_length’, ‘smartone_excerpt_length’ );
function smartone_continue_reading_link() {
return ‘ ‘ . __( ‘Читать полностью →’, ‘smartone’ ) . ‘‘;
}
Как я понял именно они влияют на отображение сообщений в поиске и категориях. Как можно отредактировать код чтобы сообщения выдавались как на главной странице.
Дмитрий, этот код, насколько я понимаю, во-первых, указывал сколько символов будет выводится в кратком сообщение (40), а во вторых создает какую-то специальную кнопку «читать далее», может название статьи добавляет.
Здравствуйте. Вы не знаете как сделать в поиске так, чтобы он искал только название поста. А то у меня вводишь в поле НЕО и он выдает все подряд — http://xn--80apij1f.su/ а у меня на сайте все нужные запросы поиска стоят в названии поста. Поиск по контенту не нужен
Ольга, для таких целей скорее всего нужно искать другой плагин, стандартный поиск ищет по всему подряд.
Как можно запретить выдачу постов из одной рубрики?
Андрей, с помощью базового поиска, скорее всего, никак. Можно поискать плагина поисков пофункциональнее или попробовать Google Custom Search.
Добрый день!
Может кто подскажет как реализовать поиск по конкретной странице??? Что то наподобие браузерного ctrl+F ? На странице есть список городов, чтобы пользователю не листать всю страницу быстро ввести сверху в поиске свой город, и он бы подсветился.
Пётр, нужно, наверное, гуглить в сторону какого-то ajax поиска дабы страница не перегружалась. Можно попробовать разбить список на колонки или сделать ссылки-переходы на блоки городов по алфавиту — типа города на А, на Б и т.п. При клике пользователь попадает в соответствующее место страницы. Это делается через якоря. Еще на ум приходит реализация в виде глоссария — тоже нужно гуглить модули.
Есть ещё классный сниппет для поиска, если пользователь ввёл запрос на неправильной раскладке: вариант 7
Иван, спасибо за дополнение статьи, в некоторых случаях этот сниппет действительно может пригодиться.
Скажите пожалуйста, как быть, если в поисковой выдаче страницы отображаются полностью и не в попад, а не анонсами, как на главной. Что нужно сделать, чтоб это исправить, плагин ни один не помогает.
Вова, если речь идет о «поисковой выдачи Google», то это никаким плагином не подправить. Возможно, в настройках поиска в Гугл-аккаунте есть какие-то настройки, но там, наверное, что цвет текста или шрифты.