DIW#11. Форма поиска WordPress

03.12.2012

Форма поиска Wordpress

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

Итак, форма поиска содержится в файле searchform.php, что дает нам модульность. Содержание файла очень очень простое, вот так выглядит моя форма поиска:

<form role="search" method="get" id="searchform" action="<?php echo home_url('/'); ?>">
<div class="twelvecol">
<input type="text" value="" name="s" id="searchinput" placeholder="<?php _e('Поищем...?', 'gb'); ?>">
<input type="submit" id="searchsubmit" value="<?php _e('Поиск', 'gb'); ?>" class="postfix button">
</div>
</form>

Собственно — поле ввода и кнопка.

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

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

<?php get_search_form(); ?>

Однако, если вы вдруг переименовали файл или положили в другое место, отличное от корневой папки шаблона(вот только зачем??) — этот код не сработает. Поможет следующая конструкция:

<?php include(TEMPLATEPATH . '/my/search-form.php'); ?>

Путь, естественно, нужно поменять на нужный. Ваш КО

На этом все, что нужно знать о стандартной форме поиска WordPress. Однако, нельзя не вспомнить о том, что встроенная система поиска WordPress — откровенно убогая. Есть множество методик ее улучшения, но радикально ситуация не меняется.
Я у себя оставил стандартный поиск, с небольшим улучшением, редиректом на статью, если поиск нашел только один результат. Делается это добавлением вот такого кода в functions.php вашего шаблона:

/*Редирект на результат поиска*/
add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
if (is_search()) {
global $wp_query;
if ($wp_query->post_count == 1) {
wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
}
}
}

Вообще, если для вас поиск по сайту — критичная функция, рекомендую поставить пользовательский поиск от Google — как это сделать?

И напоследок — неплохой плагин для настройки поиска на вашем сайте: Search Everything. Он русский, умеет задавать объекты для поиска (например, только страницы или только определенные категории), умеет исключать из поиска категории, записи и страницы и имеет кучу других настроек.
В общем, для легкой «прокачки» стандартного поиска — рекомендую. Кстати, если у вас есть по вопросам поиска какие-то наработки — расскажите об этом, мне интересна эта тема.

Следующая глава книги «Digging into WordPress» посвящена футеру, ну а за ней — создание шаблона с нуля.

Удачного вам дня

follow us in feedly

,

Комментариев: 24

  1. Григорий

    Здравствуйте, нужна помощь по настройке поиска на сайте.
    Не ищет по артикулу и ни как не можем найти где и как это сделать.
    Спасибо.

    Ответить
  2. Андрей

    Можно реализовать такую фишку, к примеру у меня 2 сайта, и когда при вводе поисковой фразы нужной статьи нет на первом сайте то показывалась статья со второго сайта?

    Ответить
    • GerinG

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

      Ответить
  3. Сергей

    Здравствуйте! Спасибо за статью. Подскажите, пожалуйста. Я тут сделал очередной сайт на Вордпресс. Но не могу настроить поиск по сайту! При вводе какого-либо слова — выдается ошибка с иероглифами. Вот сайт — http://lecenie-bolezney.ru

    На предыдущих сайтах такой проблемы никогда не было. Прошу помощи.

    Ответить
  4. Kozlov

    Стандартной формой поиска я пользовался только в самом начале А как блог разросся и стало больше посетителей, я установил поиск от гугл. Он намного удобней и лучше ищет информацию.

    Ответить
    • GerinG

      Насчет лучше ищет — это точно ))) Но, опять же, повторюсь — сайт или блог(что в принципе одно и тоже) должен хорошо индексироваться, чтобы все статьи без проблем «находились». Встроенный поиск WordPress этого недостатка лишен

      Ответить
  5. ret ltd

    Моей благодарности вам нет предела. Я новичок, и пхп и вордпресс для меня в новинку. Но делать сайт решил именно при помощи этих инструментов. Форму поиска теперь знаю как делать, буду пробовать. Ну а остальное — вы же напишете??

    Ответить
    • GerinG

      Ну смотря про что )))) Если что-то конкретное неясно — пишите, обсудим или статьей оформим

      Ответить
  6. Анна

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

    Ответить
  7. nejihuuga petrov

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

    Ответить
  8. Тетерина Оксана

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

    Ответить
  9. Андерй

    Полезная статья. Но не проще не запорачиваться и сразу перейти к установке поиска от любого из известных поисковиков?

    Ответить
    • GerinG

      Ну кому как, я к примеру, не люблю формат вывода кастомного поиска Гугла или Яндекса. Опять же, сайт должен хорошо индексироваться, чтобы поиск работал. Минусов тоже хватает, но поиск от брендов хотя бы ищет нормально )))

      Ответить
  10. Светлана

    Спасибо за полезные советы. Надеюсь, следующую главу книги не придется ждать долго

    Ответить
    • GerinG

      Да уж, затянул с переводом, самому стыдно ))) Постараюсь не задерживать следующую часть

      Ответить
  11. webDinislam

    Спасибо за интеренсую статью! Мне особенно про редирект информация показалась полезной, обязательно попробую, жду новых статей!

    Ответить