Я построил тему для автосалона. Каждый автомобиль имеет пользовательский тип сообщения («транспортное средство») и имеет около 12 пользовательских полей с такими вещами, как Марка, Модель, Пробег, Тип топлива и т. Д. И т. Д.
Так что в основном на главной странице я хочу форму поиска, которая имеет выпадающие списки для марки и модели и содержит любые доступные модели или модели.
Я также хочу, чтобы у него было 2 варианта года, чтобы конечный пользователь мог выбрать «2006» и «2012», и результаты поиска содержат все транспортные средства с указанием года между этими двумя числами.
Есть ли плагин, который может сделать это ??
Спасибо за любую помощь .. это сводит меня с ума в течение многих часов !!!!
custom-post-types
search
absdigital
источник
источник
Ответы:
Шаг 1
Начните с создания расширенной формы поиска, с помощью которой вы хотите, чтобы ваш пользователь взаимодействовал с веб-сайтом, и сохраните ее под именем (т.е. я сохранил ее как
advanced-searchform.php
- но не сохраняйте ее,searchform.php
тогда она заменит поисковую форму WordPress по умолчанию). ):Затем вызовите форму в свой шаблон, как показано ниже:
Теперь ваша поисковая форма готова, и теперь вы можете использовать поисковую форму и вводить пользовательский URL-адрес.
Шаг 2
То, что вам просто нужно: запросить базу данных и запрос типа записи и ее настраиваемых полей согласно поисковому запросу . Помните, что ваш поисковый запрос теперь является URL-адресом, который вы получили после отправки формы. Теперь попросите WordPress загрузить свою страницу результатов поиска при отправке формы. Поместите следующую функцию в свой,
functions.php
чтобы он включил ваш пользовательский шаблон поиска вместо значения по умолчаниюsearch.php
:Я принес код где-то из WPSE (я забыл рут), но есть противоречие с использованием кода выше. Но это на самом деле работает ( извините, конечно ).
Проверьте другой способ, предложенный @GM.
Шаг 3
Создайте новый файл и сохраните его с
advanced-search-result.php
(потому что мы использовали это имя вfunctions.php
), и теперь вы свободны - очевидно. Концепция это:WP_Query()
(если ваш запрос сложный, используйте$wpdb
запрос),Образец может быть:
Итак, вот ваша последняя вещь. Но все же есть много проблем:
$wpdb
пользовательский запрос SQL для сложного результата поиска, и это будет чистый MySQL - в WordPress ничего нет.page.php
(илиsearch.php
) шаблон и сделать эту страницу на основе этого.Итак, у вас есть идея, теперь ваша очередь исследовать и открывать путь . Помните, у каждого свой путь. Сделай свой, чтобы я мог следовать за тобой. :)
источник
WP_Query()
использованием параметров пользовательских полей и петли в результате , чтобы показать<option>
с.pre_get_posts
хука, а не вторичного цикла.Хотя ответ @ MayeenulIslam может сработать, я думаю, что правильный путь для расширенного поиска - использование
pre_get_posts
ловушки действий.Шаг 1: Форма поиска
Этот шаг равен к шагу 1 в другом ответе, просто изменил
id
наname
поле (<input type="text" ...>
используется для поиска на «S» , поэтому он будет использоваться непосредственно в качестве области поиска. Сохранить этот код вadvanced-searchform.php
соответствии с вашей папкой темы. Затем используйтеget_template_part( 'advanced', 'searchform' );
для загрузите его там, где хотите, чтобы он отображался в вашей теме:Шаг 2. Добавьте фильтры в поисковый запрос.
Шаг 3: Шаблонирование (необязательно)
При использовании этого метода будет использоваться шаблон поиска WordPress по умолчанию, который фильтрует результаты без необходимости повторного запроса. Если вы хотите использовать другой шаблон для расширенного поиска, вы можете использовать
template_include
фильтр. Например, если вы хотите использоватьadvanced-search-template.php
файл в качестве шаблона для результатов из формы расширенного поиска:источник