Поиск по сайту wordpress

Всем привет, сегодня хочу поговорить с вами о форме поиска в wordpress и результатах поиска.

По-умолчанию, WP делает поиск по заголовкам, контенту и цитатам, - да и сам поиск в wordpress работает не сильно эффективно, например "рука" и "руки" для него разные вещи 🙂 . Как решить эту проблему я расскажу чуть позже, а сейчас давайте разберемся зачем нужен поиск по WordPress, а также попробуем сделать простейшую форму поиска в Вордпресс.

Чем полезен поиск по сайту wordpress

  • Для пользователей поиск по сайту wordpress полезен:

    1. Возможностью найти интересующий их материал.
    2. Просмотром всех записей на одну и ту же тему на одном сайте.
    3. Можно просмотреть интересные материалы не покидая пределы сайта.

  • Для СЕО оптимизации поиск по сайту wordpress улучшает поведенческие факторы, увеличивает число просматриваемых страниц, а также удерживает пользователя на сайте.

    Для вас, как владельцу сайта, поиск wordpress позволяет:

    1. Зацепить пользователя по одному запросу и удерживать до определенного момента.
    2. Увеличить число страниц сайта, если использовать правильные возможности ВП + СЕО.

WordPress форма поиска

к менюСамостоятельно сделать форму поиск в wordpress довольно не сложно, но есть несколько вариантов:

  1. использовать виджет поиска
  2. сделать форму самостоятельно.
Не знаете что такое виджет поиска? - перейдите по этой ссылке вашсайт/wp-admin/widgets.php (если ваша тема поддерживает виджеты) вы увидите там вот такое окно:
wordpress форма поиска

Его можно добавить в область виджетов, вот так:поиск в wordpress

Но сегодня я расскажу вам о втором способе, как самостоятельно делается wordpress форма поиска.

В этом нет ничего сложного, вам достаточно закинуть в тему вот такой код:

<form action="<?php bloginfo( 'url' ); ?>" method="get">
<input  type="text" name="s" placeholder="Поиск" value="<?php if(!empty($_GET['s'])){echo $_GET['s'];}?>"/>
<input type="submit" value="Найти"/>
</form>

Этот код можно закинуть в любое место темы, будь то это шапка сайдбар или футер.

Проверить работу формы поиска wordpress можно написав в поле ввода текст и нажать на ентер или кнопку "найти", в результате вы получите список похожих постов и страниц, или не получите ничего, если такой строки нет.

Это самая простая wordpress форма поиска, если вам нужно настроить ей красивый вид или сделать ее в pop up нужно создать и настроить стили CSS. Этот момент я сейчас упускаю, возможно вернемся к нему когда то по позже.

Как вариант, форма поиска wordpress может выглядеть вот так: поиск в wordpress

 

Результаты поиска wordpress

к менюЗа вывод результатов поиска в WordPress теме отвечает файл search.php . Он обычно похож на index.php или category.php. Чтобы увидеть результаты поиска wordpress, можно воспользоваться простейшим кодом:

<?php get_header(); ?>
<h1>Поиск по: "<?php echo $_GET['s'];?>"</h1>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink();?>"><?php the_title(); ?></a>
<?php the_content(''); ?>
<?php endwhile; else: ?>
<p>Поиск не дал результатов.</p>
<?php endif;?>
<?php get_footer(); ?>

Конечно для использования этого кода вам нужно его оптимизировать под свой шаблон. Более подробно об этом я постараюсь описать по позже и выложить сюда ссылку.

 

Настройка поиска wordpress: исключаем страницы

к менюБывает такая ситуация, что нужно исключить из поиска страницы (page), посты (post) или пользовательские / произвольные типы. Для этого можно воспользоваться волшебным кодом для изменения цикла WP и удаления страниц, постов и т. д. из результатов поиска.

Настройка поиска wordpress делается довольно просто, вот такой код может исключить все страницы из результатов поиска и выбрать только посты:

<?php
$args = array_merge( $wp_query->query, array( 'post_type' => "post") );
query_posts($args); ?>

Если предположить что у вас есть произвольный / пользовательский тип записей "mypost" и мы хотим вывести в результатах поиска все посты и свой пользовательский тип, - достаточно написать вот такой код:

<?php
$args = array_merge( $wp_query->query, array( 'post_type' => array("post", "mypost")) );
query_posts($args); ?>

 

Важно: вставлять этот код нужно до вызова цикла, конкретно перед этим кодом <?php if (have_posts()) : while (have_posts()) : the_post(); ?> в файле поиска search.php

 

Плагин поиска для wordpress

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

Как же сделать более адекватный поиск по сайту wordpress? - нужно использовать плагин поиска для wordpress Relevanssi - A Better Search.

Скачать плагин можно вот здесь: Получить ссылку на (Relevanssi)

поиск в wordpress relevanssi

Настройки этого плагина я постараюсь описать в ближайшее время. Вкратце опишу только возможности этого плагина:

  • поиск по произвольным полям wordpress;
  • фильтр поиска;
  • настройка поиска;
  • подсвечивание другим цветом поискового запроса в тексте;
  • индексация всего сайта в базу данных для уменьшения нагрузки;
  • поиск по меткам, категориям, таксономиям;
  • поиск по комментариям и многое другое.

От себя хочу добавить, что в своих проектах я использую именно этот плагин поиска для wordpress, хотя до этого перепробовал их уйму. Не поленитесь один раз настроить этот плагин и вы получите отличные результаты. Более подробно плагин поиска для wordpress (откроется в новом окне) описан по ссылке.

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

 

к менюНа этом пока что все, я описал основные моменты для создания формы и страницы поиска WP, а также настройку поиска, результаты и плагин поиска ВП.

Комментарии к записи «Поиск по сайту wordpress»:
  1. Влад:

    получилось даже проще смотрите сами (-spam-url-)

  2. Игорь:

    Здравствуйте. Не могу найти где поменять слово "Поиск" внутри поля для ввода слов. Весь сайт уже просмотрел

    • admin:

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

    • Игорь:

      Вот как это сейчас выглядит: (-url-)

      Я скачал на компьютер всю папку вордпресс и сделал поиск по ней со словом Поиск, но мне ничего не выдало. От этого и вопрос, где он может быть?

    • admin:

      Вы же понимаете если там вместо "Поиск" написано "Search" или аналог то поиск ничего и не выдаст 🙂

      Смотрите в сторону header.php может там быть, а может и нет. Может в функциях сидеть, может специальный файл отдельный быть. Вариантов куча. Посмотрите какой там хтмл возможно уникальный id есть или class и по нем ведите поиск, тогда больше шансов будет

    • Игорь:

      В том то и дело, что там написано Поиск. Причем как внутри окошка, так и на кнопке. А раз есть слово поиск, значит он должен показаться 🙂 но все не то...

    • admin:

      Нет, если у вас на сайте написано "поиск" и это скачанная тема, и этот текст писали не вы туда, то 99.9% что на русском языке в коде не может быть написано поиск, потому как тема идет на англ языке, а перевод на русский подключается отдельным файлов, который может быть как в теме так и в папке wp-content/language

      Вы не то слово ищите, а что искать надо я написал выше. на крайняк еще можно вот это искать name="s" или name='s' хотя не факт что найдет. смотрите через хтмл код какие там классы и ид вот по них и нужно искать

    • Игорь:

      Нашел в general-template.php со словами search-submit и поменял! Спасибо огромное

  3. Дмитрий:

    Подскажите, пожалуйста, по поводу плагина Relevanssi, установил его, работает лучше чем стандартный поиск wordpress, теперь и по категориям искать можно, но вот он почему то не различает "подслова" в слове. То есть если я ввожу "Германия" а в записи слово "Германии", то он ничего не найдет, как это можно исправить? смотрел нет ли никаких query_posts, вроде все чисто, даже wp_query нет, что ему тогда может мешать работать?

    • admin:

      Добрый день.
      Алгоритм поиска довольно сложный и однозначно ответить почему он так ищет трудно. Как вариант посмотрите настройки плагина, там есть такая графа "Когда использовать нечеткое соответствие?" попробуйте поменять значение.

  4. Ekaterina:

    Здравствуйте! Подскажите пожалуйста! Я новичок в сайтостроении. Такая ситуация, на сайте есть поиск, он активный. Но, после того как я забиваю на сайте любую фразу, то выходят статьи, но они не активные(т.е я на них кликаю, а они не открываются). Что делать?

    • admin:

      Добрый день.
      Покажите сайт. На мой взгляд проблема в самой ссылке на которую вы кликаете. Или там вовсе нет ссылки на статью или там ссылка есть но навешенное яваскрипт событие которое запрещает переход по ссылке.

  5. Андрей:

    Здравствуйте, как сделать так, чтобы выводилось больше 10 результатов поиска? Вывод через search.php.

    • admin:

      Добрый день.
      Если не используете никаких плагинов, то вот такой код в functions.php :

      function pre_get_posts_more( $query ) {
      if ( !is_admin() && $query->is_main_query() && is_search() ) {
      $query->set( 'posts_per_page', 30 );
      }
      }
      add_action( 'pre_get_posts', 'pre_get_posts_more' );

      сделает вывод по 30 результатов на странице, если изменить число 30 на 20 то будет 20 и так далее

    • Андрей:

      Большое спасибо, это вариант для небольшого числа результатов поиска. Я в итоге решил проблему добавлением в search.php пагинации:

      str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
      'format' => '?paged=%#%',
      'current' => max( 1, get_query_var('paged') ),
      'type' => 'plain',
      'prev_text' => __('« Назад'),
      'next_text' => __('Вперед »'),
      'total' => $wp_query->max_num_pages
      ) );
      ?>

  6. Хвостенко:

    Здравствуйте, подскажите пожалуйста, как реализовать фильтр поиска по параметрам для сайта недвижимости на WP? Параметры поиска: город, вид недвижимости, метраж, количество комнат и пр.

    • admin:

      Добрый день.
      Я рассказать то могу но вряд ли это вам поможет. Алгоритм работы такой, делаем произвольные поля для каждого объекта, который будем искать, поля которые вам нужны: город, метраж ....

      Далее во время поиска перехвачиваем обращение, например смотрим если указанные get параметры, город, метраж.. и внедряем их в запрос, путем дополнительного фильтра для основного цикла (поиск по произвольным полям).

      Но это на словах просто, а как начнешь писать получается очень долго. Кстати вместо правки основного цикла можно делать ветку, ног проще не будет 🙁

  7. Андрей:

    К комменту Яна: Все тоже самое,только туристическая тематика.Пжлста,может есть плагин поиска,где можно добавлять,эти самые произвольные поля.

    • admin:

      Добрый день.
      Суть проблемы ясна и к сожалению плагин поиска Relevanssi эту проблему не решит. Вам нужен не поиск, а полноценный фильтр. К сожалению порекомендовать вам плагин для построения фильтров в wordpress я не могу, так как никогда их не использовал. Обычно делаю фильтр в ручную, но цена такой работы порядка 20-50$ за вариант по проще и от 50 за сложные варианты. Можете описать по каким параметрам вам нужно фильтровать и я попытаюсь оценить.

  8. Яна:

    Я хочу сделать сайт-кулинарный блог, и добавлять не только статьи, но и рецепты. Возможно ли на Вордпрессе установить посик (фильтр) где в окне посетители будут выбирать рецепты по заданным параметрам: сложность приготовления, цена, белковый рейепт, десерт? Слышала, что такой поик только на Джумле доступен. Но нашла вашу статью и теплится надежда, что Фордпресс меня вырусит и я пойду на него создавать свой сайт. Заранее спасибо

    • admin:

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

  9. Валентин:

    Спасибо!
    Помог )

  10. Пётр:

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

    • admin:

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

    • andrey:

      Получилось с поиском по списку городов что-нибудь?

  11. Светлана:

    Вы сможете посмотреть мой сайт, у меня не работает поиск в wordpress.
    Вот сайт (-url-)
    Когда я ввожу любое слово, даже то что 100% несколько раз встречается в тексте, я все равно получаю в ответе нет результатов поиска.
    Получается что глючит поиск но не понятно почему.
    заранее большое спасибо

Сделать заказ
Онлайн помощь по WordPress