Поиск WordPress с похожими / частичными результатами на основе таксономии

#wordpress #search #closest #wpas #partial-matches

#wordpress #Поиск #ближайший #wpas #частичные совпадения

Вопрос:

Я работаю над каталогом, который я создал в WordPress. Каталог работает как пользовательский тип записи под названием «агенты» и имеет собственную таксономию под названием «agent_location». У каждого агента есть несколько терминов «agent_location», добавленных в их список. Каждый термин agent_location связан только с одним «агентом». Каждый agent_location является началом почтового индекса Великобритании. Например, «AB1 1» или «AB11 3» и т.д.

Я использую расширенный поиск WPAS WordPress (http://wpadvancedsearch.com /) для создания форм поиска. Я бы хотел, чтобы конечный пользователь мог ввести весь свой почтовый индекс, например AB1 1AA, и ему был представлен пост агента, в котором указан термин «AB1 1», а не пост агента, в котором указан «AB11 3». По сути, поиск должен игнорировать последние 2 цифры любого введенного поиска. В настоящее время созданная мной форма выглядит следующим образом:

 function agents_search_form() {
$args = array();
$args['wp_query'] = array('post_type' => 'agents',
                          'posts_per_page' => -1);

$args['fields'][] = array('type' => 'search',
                          'title' => 'Search',
                          'placeholder' => 'Enter search terms...',
                            'pre_html' => '<div class="hiddenField searchRow"><div class="searchWrap">',
                            'post_html' => '</div>');

$args['fields'][] = array( 'type' => 'submit',
                           'class' => 'button',
                           'value' => 'Search' ,
                            'pre_html' => '<div class="searchBTNWrap">',
                            'post_html' => '</div></div>');

$args['fields'][] = array('type' => 'taxonomy',
                          'taxonomy' => 'agent-location',
                          'format' => 'text');


register_wpas_form('agents-form', $args); 
}
 add_action('init', 'agents_search_form');  
  

Когда вы используете форму, она работает идеально, при условии, что вы не указываете последние 2 цифры своего почтового индекса. Если вы введете весь свой почтовый индекс, результаты поиска не будут найдены.
Я хотел бы получить помощь в создании формы поиска, которая позволяет пользователям вводить весь свой почтовый индекс в поиск и все равно получать результат.

Я открыт для идеи обходных путей. Пожалуйста, имейте в виду, что:

  • Почтовые индексы, которые публикует каждый агент, распределены по всей Великобритании. Нет центрального местоположения для работы, поэтому поиск по карте «radius» не будет работать.
  • Я рад перенести таксономию в post непосредственно в качестве пользовательского поля, если это поможет
  • Веб-сайт уже запущен, поэтому я не хочу воссоздавать все заново, но я рад кодировать новые решения или использовать плагины, если они дают желаемые результаты. В настоящее время веб-сайт использует Gravity forms, WPA, Beaver Builder и ACF pro.
  • Большая часть посетителей веб-сайта слепы или частично зрячие, поэтому решения должны быть «удобными для чтения с экрана»

Заранее спасибо

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

1. Я бы сделал это с помощью AJAX: когда пользователь вводит свой почтовый индекс, вы можете либо обновить список, либо отобразить предложения по почтовому индексу в выпадающем списке.

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

Ответ №1:

В итоге я использовал плагин Relevanssi — https://wordpress.org/plugins/relevanssi и объединение его с WPadvancedsearch на самом деле хорошо работает вместе и позволяет мне делать все, что мне было нужно.