В WordPress существует несколько способов реализовать поиск по меткам, включая написание собственного кода или использование плагинов. Вот несколько подходов, которые вы можете рассмотреть:
### 1. Использование стандартного поискового функционала WordPress
WordPress по умолчанию позволяет производить поиск по записям. Однако, чтобы сделать поиск более специализированным (например, по тегам и названиям) можно использовать параметр `pre_get_posts` в вашем `functions.php`:
```php
function custom_search_query( $query ) {
if ( $query->is_search && !is_admin() ) {
// Убедитесь, что поиск производится по меткам и заголовкам
$query->set( 'tax_query', array(
array(
'taxonomy' => 'post_tag', // Здесь укажите таксономию, например, 'post_tag'
'field' => 'name',
'terms' => explode( ',', get_search_query() ) // Разделяем запрос по запятой
),
));
// Поиск по заголовкам
$query->set( 's', get_search_query() );
}
}
add_action( 'pre_get_posts', 'custom_search_query' );
```
### 2. Использование плагинов
Существует множество плагинов, которые могут помочь вам расширить возможности поиска на вашем сайте:
- **SearchWP**: Платный плагин, который позволяет настраивать, по каким полям осуществляется поиск и поддерживает поиск по таксономиям.
- **Relevanssi**: Бесплатный и платный варианты, предоставляет улучшенные возможности поиска, включая поиск по тегам, и позволяет пользователю искать по нескольким тегам одновременно.
### 3. Настройка пользовательского поиска формы
Вы можете создать свою форму поиска, которая позволит пользователям вводить несколько тегов. Например, вы можете сделать текстовое поле, куда будет вводиться строка тегов, разделенных запятыми. Затем вы можете использовать JavaScript или PHP для обработки этой информации, чтобы корректно передать их в поисковый запрос.
### 4. Комбинированный поиск
Если вы хотите поддерживать возможность поиска по заголовкам и меткам одновременно, вы можете использовать следующий код в вашем `functions.php`:
```php
function combined_search_query( $query ) {
if ( $query->is_search && !is_admin() ) {
$search_terms = explode( ',', get_search_query() );
// Поиск по меткам
$tax_query = array(
'relation' => 'OR', // Используем OR, чтобы найти совпадения
);
foreach ( $search_terms as $term ) {
$tax_query[] = array(
'taxonomy' => 'post_tag',
'field' => 'name',
'terms' => trim( $term ),
);
}
// Устанавливаем параметры для поиска по меткам и заголовкам
$query->set( 'tax_query', $tax_query );
$query->set( 's', implode( ' ', $search_terms ) ); // также ищем по заголовкам
}
}
add_action( 'pre_get_posts', 'combined_search_query' );
```
### Заключение
Выбор метода зависит от ваших требований и уровня комфорта с кодом. Если вы хотите быстрое решение без программирования, рекомендуем использовать один из упомянутых плагинов. Если вы хотите больше контроля и готовы писать код, то редактирование `functions.php` может быть лучшим вариантом.