Валейкум ас-салам! Чтобы создать поисковую форму, которая будет искать посты по произвольным полям (custom fields) в WordPress, вам нужно выполнить несколько шагов. Вот пример, как это можно сделать:
### 1. Создайте форму поиска
Добавьте на ваш сайт форму поиска. Это можно сделать в файле `.php`, где вы хотите отобразить поиск (например, в `header.php` или отдельном шаблоне):
```php
<form method="get" action="<?php echo home_url('/'); ?>">
<input type="text" name="s" placeholder="Поиск...">
<input type="text" name="custom_field" placeholder="Поиск по произвольному полю">
<input type="submit" value="Искать">
</form>
```
### 2. Измените запрос поискового запроса
Чтобы сделать поисковую форму, которая будет обрабатывать запросы по произвольным полям, вам нужно изменить основной запрос. Это можно сделать с помощью фильтра `pre_get_posts`. Добавьте следующий код в файл `functions.php` вашей темы:
```php
function custom_search_query($query) {
if ($query->is_search && !is_admin()) {
$custom_field_value = get_query_var('custom_field');
if (!empty($custom_field_value)) {
$meta_query = array(
array(
'key' => 'your_custom_field_key', // замените на ваш ключ произвольного поля
'value' => $custom_field_value,
'compare' => 'LIKE'
)
);
$query->set('meta_query', $meta_query);
}
}
}
add_action('pre_get_posts', 'custom_search_query');
```
### 3. Использование `get_query_var`
Не забудьте зарегистрировать параметр `custom_field`, чтобы он был доступен в запросе. Добавьте эту строку в ваш файл `functions.php`:
```php
function custom_query_vars_filter($vars) {
$vars[] = "custom_field";
return $vars;
}
add_filter('query_vars', 'custom_query_vars_filter');
```
### 4. Тестирование
Теперь, когда вы введете что-то в поле поиска вашего произвольного поля и отправите форму, результаты поиска будут также включать записи, в которых найдете совпадение в произвольном поле.
### Замечания
- Убедитесь, что ключ `your_custom_field_key`, указанный в `meta_query`, соответствует тому, как вы сохраняете свои произвольные поля.
- Поскольку поисковая система по умолчанию может не искать в произвольных полях, вам необходимо использовать данный подход.
Теперь у вас есть работающая поисковая форма, которая также ищет по произвольным полям! Если у вас возникнут дополнительные вопросы, не стесняйтесь спрашивать.