Для реализации поиска с фильтром в WordPress с использованием плагина Advanced Custom Fields (ACF) необходимо выполнить несколько шагов. Вот подробная инструкция:
1. Установите и активируйте плагин ACF на своем сайте WordPress. После активации плагин добавит новое меню "Поля" в боковую панель администратора.
2. Создайте группу полей для поиска. В меню "Поля" нажмите на кнопку "Добавить новую" и создайте новую группу полей. В этой группе полей вы можете определить необходимые поля для фильтрации, такие как текстовые поля, выпадающие списки и т. д. Обязательно задайте уникальное имя группе полей и выберите "Все" (или конкретные) типы записей где вы хотите использовать эту группу.
3. Для каждого поля в группе полей задайте метапараметры. Вы можете определить название поля, тип поля (текстовое поле, выпадающий список, и т. д.), варианты выбора и т. п. Эти параметры будут использоваться при фильтрации поиска.
4. Вставьте код поиска на вашей странице. Создайте шаблон страницы, где вы хотите разместить форму поиска. В нем вы можете использовать следующий код:
<form action="<?php echo site_url('/'); ?>" method="get" id="searchform"> <input type="text" name="s" id="s" placeholder="Введите ключевое слово" /> <?php $fields = get_field_objects( 'your_field_group' ); foreach ( $fields as $field_name => $field ) { echo '<select name="' . $field_name . '">'; echo '<option value="">' . $field['label'] . '</option>'; echo '<option value="option_1">' . $field['option_1'] . '</option>'; // Добавьте другие варианты echo '</select>'; } ?> <button type="submit">Найти</button> </form>
В этом коде мы создаем форму поиска с текстовым полем (name="s") для ключевого слова и выпадающим списком (name="your_field_name") для каждого поля из вашей группы полей. Замените 'your_field_group' на имя вашей группы полей и добавьте необходимые варианты для каждого выпадающего списка.
5. Добавьте фильтрацию поиска в функции фильтрации запросов. Этот код следует добавить в файл functions.php вашей активной темы:
function custom_search_filter($query) { if (!$query->is_admin && $query->is_search) { // Получить все поле для поиска $fields = get_field_objects( 'your_field_group' ); $meta_query = array('relation' => 'AND'); // Цикл по всем полям группы полей foreach ( $fields as $field_name => $field ) { if (isset($_GET[$field_name]) && !empty($_GET[$field_name])) { $meta_query[] = array( 'key' => $field_name, 'value' => $_GET[$field_name], 'compare' => 'LIKE' ); } } // Применить мета-запрос для фильтрации $query->set('meta_query', $meta_query); } return $query; } add_filter('pre_get_posts','custom_search_filter');
В этом коде мы добавляем фильтрацию по метаданным запроса на основе переданных значений из формы поиска. Обратите внимание, что мы используем также имя вашей группы полей ('your_field_group') и группируем запросы с использованием отношения 'AND'.
Теперь у вас должен быть рабочий поиск с фильтром в вашей системе WordPress с помощью плагина Advanced Custom Fields (ACF).