Как добавить строку поиска в WordPress: пошаговое руководство без использования плагинов

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

Преимущества реализации поиска без плагинов

  • Производительность: Избегание лишних плагинов уменьшает нагрузку на сервер и повышает скорость загрузки страниц.
  • Контроль: Вы получаете полный контроль над внешним видом и функциональностью строки поиска.
  • Минимизация конфликтов: Уменьшение количества плагинов снижает вероятность конфликтов между ними.
  • Обучение и развитие: Ручная реализация помогает лучше понять структуру и функциональность WordPress.

Когда стоит рассматривать альтернативные решения (плагины)

  • Если вам требуется сложная функциональность поиска (например, поиск по атрибутам товара в WooCommerce).
  • Если у вас нет опыта работы с PHP, HTML и CSS, и вы предпочитаете более простой подход.
  • Если вам важна быстрая установка и настройка, а производительность не является критическим фактором.

Подготовка темы WordPress для добавления строки поиска

Прежде чем приступить к реализации, необходимо подготовить вашу тему WordPress.

Обзор структуры файлов темы WordPress

Основные файлы, которые нас интересуют:

  • header.php: Содержит шапку сайта, где часто размещают строку поиска.
  • sidebar.php: Содержит боковую панель, еще одно популярное место для строки поиска.
  • functions.php: Содержит пользовательские функции темы.
  • style.css: Файл стилей, используемый для оформления внешнего вида.
  • template-tags.php: (Не всегда присутствует) Может содержать пользовательские функции шаблона.

Выбор места для размещения строки поиска (header.php, sidebar.php и т.д.)

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

Создание резервной копии темы (важная мера предосторожности!)

Перед внесением каких-либо изменений в файлы темы обязательно сделайте резервную копию. Это позволит вам восстановить сайт в случае возникновения ошибок. Самый простой способ — скопировать папку с темой на ваш компьютер. Также можно использовать плагины для резервного копирования.

Реализация строки поиска через functions.php и template-tags.php

Мы будем использовать functions.php (или template-tags.php) для создания функции, генерирующей HTML-код строки поиска, а затем выведем эту функцию в нужном месте шаблона.

Создание функции для генерации HTML-кода строки поиска

Вот пример PHP-функции, которая генерирует HTML-код строки поиска:

<?php
/**
 * Генерирует HTML-код формы поиска.
 *
 * @param string $form  Текст для атрибута 'form'. Необязательный.
 * @return string HTML-код формы поиска.
 */
function my_custom_search_form( string $form = null ): string {

  $form = '<form role="search" method="get" id="searchform" class="searchform" action="' . esc_url( home_url( '/' ) ) . '">
        <div>
            <label class="screen-reader-text" for="s">' . __('Search for:', 'your-theme-textdomain') . '</label>
            <input type="text" value="' . get_search_query() . '" name="s" id="s" placeholder="Поиск по сайту..." />
            <input type="submit" id="searchsubmit" value="'. esc_attr__('Search', 'your-theme-textdomain') .'" />
        </div>
    </form>';

  return $form;
}
?>
Реклама

Использование getsearchform() для кастомизации формы поиска

В WordPress есть встроенная функция get_search_form(), которую можно переопределить. Наша функция, представленная выше, по сути, заменяет стандартный вывод get_search_form(). Это позволяет нам полностью контролировать HTML-код формы поиска.

Добавление функции в functions.php или template-tags.php (рекомендации)

Рекомендуется добавлять пользовательские функции в functions.php вашей темы (или в template-tags.php, если он существует). Если вы используете дочернюю тему, то добавляйте функцию в functions.php дочерней темы. Это обеспечит сохранность изменений при обновлении основной темы.

<?php
add_filter( 'get_search_form', 'my_custom_search_form' );
?>

Вывод строки поиска в нужном месте шаблона с помощью PHP

Чтобы вывести строку поиска в нужном месте шаблона (например, в header.php), используйте следующий PHP-код:

<?php echo my_custom_search_form(); ?>

Стилизация строки поиска с помощью CSS

Теперь, когда у нас есть HTML-код строки поиска, необходимо стилизовать его с помощью CSS.

Идентификация элементов строки поиска (input, button)

В нашем примере, HTML-код строки поиска содержит следующие элементы:

  • #searchform: ID формы.
  • #s: ID текстового поля ввода.
  • #searchsubmit: ID кнопки отправки формы.

Настройка внешнего вида (размер, цвет, шрифт и т.д.) в style.css

Добавьте CSS-правила в style.css вашей темы для стилизации элементов строки поиска. Например:

#searchform {
  width: 300px;
  margin-bottom: 20px;
}

#s {
  width: 70%;
  padding: 10px;
  border: 1px solid #ccc;
}

#searchsubmit {
  width: 25%;
  padding: 10px;
  background-color: #007bff;
  color: white;
  border: none;
  cursor: pointer;
}

#searchsubmit:hover {
  background-color: #0056b3;
}

Адаптивность для мобильных устройств (media queries)

Используйте медиа-запросы CSS для адаптации внешнего вида строки поиска для мобильных устройств. Например:

@media (max-width: 768px) {
  #searchform {
    width: 100%;
  }

  #s {
    width: 65%;
  }

  #searchsubmit {
    width: 30%;
  }
}

Расширенные настройки и оптимизация

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

Убедитесь, что ваш контент оптимизирован для поиска. Используйте ключевые слова в заголовках, текстах и мета-описаниях. Помните про семантическую разметку. Оптимизируйте скорость загрузки страниц.

Интеграция с пользовательскими типами записей

Если вы используете пользовательские типы записей, убедитесь, что они включены в результаты поиска. Это может потребовать внесения изменений в запрос поиска WordPress. Используйте фильтр pre_get_posts для изменения запроса.

<?php
/**
 * Включает пользовательские типы записей в результаты поиска.
 *
 * @param WP_Query $query Объект запроса WordPress.
 */
function my_custom_search_cpt( WP_Query $query ) {
  if ( $query->is_search() && $query->is_main_query() ) {
    $query->set( 'post_type', array( 'post', 'page', 'your_custom_post_type' ) );
  }
}
add_action( 'pre_get_posts', 'my_custom_search_cpt' );
?>

Решение распространенных проблем (не работает поиск, ошибки CSS)

  • Не работает поиск: Убедитесь, что функция my_custom_search_form() правильно добавлена в functions.php и что вы правильно выводите ее в шаблоне.
  • Ошибки CSS: Проверьте синтаксис CSS-правил и убедитесь, что селекторы CSS соответствуют элементам HTML-кода строки поиска. Используйте инструменты разработчика в браузере для отладки CSS.

Добавить комментарий