Вопрос или проблема
Мои искренние извинения за то, что задаю этот вопрос, так как я уверен, что это относительно легкая тема. К сожалению, у меня не было удовлетворительных результатов после многих часов поиска. Я не против продолжить исследование этой темы, поэтому любые ссылки на соответствующие посты будут очень полезны!
Проблема
Я хочу, чтобы пользователи попали на определенную страницу архива после использования формы поиска на моей главной странице. Например: когда пользователь использует форму поиска на mysite.com, его перенаправляют на все результаты в архиве определенного пользовательского типа записи; mysite.com/customposttype/?s=search-therm
Я использую Elementor Pro для стилизации формы поиска и поэтому хотел бы сохранить эту функциональность.
Попытки
Я создал новую форму поиска с скрытым полем с именем моего пользовательского типа записи. Это, к сожалению, все равно приводило к стандартному архиву (mysite.com/?s=search-term), а не к архиву пользовательского типа записи.
Как я могу адаптировать форму поиска так, чтобы у меня было несколько форм поиска на моем сайте, которые все перенаправляют на определенную директорию пользовательского типа записи?
Спасибо!
Просто создайте HTML-форму в Elementor на странице архива, где вы хотите искать.
Код:
<form class="zohaib-search-form" role="search" action="/courses" method="get">
<input placeholder="Поиск.." name="s" type="search">
<button type="submit"><i class="fas fa-search"></i></button>
**Примечание:** свойство name input должно быть ‘s’, потому что поисковой запрос ищет ключ ‘s’, чтобы получить и запустить его.
Замените свойство action на ваш пользовательский тип записи. Это будет работать только если ссылка действия будет страницей архива. После отправки поиска результаты фильтра также будут отображаться на той же странице архива, как на моей странице архива курсов.
Ответ или решение
Перенаправление поискового запроса WordPress на страницу архива
Уважаемые коллеги,
Проблема, с которой вы столкнулись, является распространенной между разработчиками, работающими с WordPress, особенно теми, кто использует пользовательские типы записей и пытается улучшить пользовательский опыт поиска. Ваша цель заключается в том, чтобы перенаправить запросы поиска на конкретную архивную страницу для вашего пользовательского типа записей, что, безусловно, возможно.
Анализ проблемы
По умолчанию WordPress отправляет результаты поиска на страницу /
, что не всегда является желаемым результатом, особенно если у вас есть специализированные архивы для пользовательских типов записей. Итак, чтобы перенаправить запросы на нужную страницу, мы можем воспользоваться простым решением, внедрив небольшие изменения в код HTML вашей формы поиска.
Решение
-
Создание пользовательской формы поиска в Elementor:
Вам следует создать новую форму поиска на вашей домашней странице, которая будет перенаправлять пользователей на архивный страницу определенного пользовательского типа записей. Для этого создайте HTML-форму с использованием следующего кода:<form class="custom-search-form" role="search" action="/customposttype/" method="get"> <label for="search-term">Поиск:</label> <input id="search-term" placeholder="Введите запрос..." name="s" type="search" required> <button type="submit">Поиск</button> </form>
Важные моменты:
- Замените
action="/customposttype/"
на URL, который соответствует архиву вашего пользовательского типа записей. - Обратите внимание, что имя поля поиска —
name="s"
, это ключ, который WordPress ищет для обработки поисковых запросов.
- Замените
-
Динамическое перенаправление для нескольких форм:
Если вы хотите, чтобы у вас были несколько поисковых форм, пересылающих запросы на разные архивы, вы можете добавить скрытые поля в каждую форму. Например:<form class="custom-search-form" role="search" action="/customposttype1/" method="get"> <input type="hidden" name="post_type" value="customposttype1"> <input name="s" type="search" placeholder="Введите запрос..." required> <button type="submit">Поиск</button> </form>
В этом примере вы можете добавлять больше форм, изменяя
action
иvalue
скрытого поля в зависимости от нужного пользовательского типа записей. -
Дополнительно: использование PHP для перенаправления:
Если вам нужно более комплексное решение или вы хотите реализовать это программно, вы могли бы использовать хукpre_get_posts
в файлеfunctions.php
вашей темы:function redirect_search_to_custom_post_type($query) { if ($query->is_search && !is_admin()) { $query->set('post_type', 'customposttype'); } } add_action('pre_get_posts', 'redirect_search_to_custom_post_type');
Этот код будет перенаправлять любые запросы поиска на конкретный пользовательский тип записей, когда пользователи используют стандартный поиск.
Заключение
Перенаправление поисковых запросов в WordPress на определенные архивные страницы пользовательских типов записей — это несложная задача с учетом предложенных выше решений. Подход с созданием пользовательских форм поиска в Elementor позволит вам сохранить функциональность и стиль оформления, который вы предпочитаете. Используя данные подходы, вы сможете значительно улучшить пользовательский опыт вашего сайта.
Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их. Успехов в работе над вашим проектом!