Title: Настроить поиск по произвольным полям
Last modified: 25.06.2024

---

# Настроить поиск по произвольным полям

 *  [rootey](https://ru.wordpress.org/support/users/rootey/)
 * (@rootey)
 * [2 года, 3 месяца назад](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/)
 * Здравствуйте, решил настроить поиск по произвольным полям. Суть простая, добавляю
   в поле дополнительные названия, чтобы пост было легче найти в поиске (речь о 
   поиске внутри сайта). Поиск по тексту статьи отключил. В итоге работает, но нагрузка
   на БД возросла в двое, чтобы не менять тариф хостинга, решил попробовать оптимизировать
   или подыскать более удачный код. 
   Возможно у кого-то есть готовое решение или
   возможность помочь оптимизировать данный код. За помощь отправлю вознаграждение.
   Вот мой вариант, поиск идет сразу по двум полям «pole1, pole2»
 *     ```wp-block-code
       function cf_search_join( $join ) {global $wpdb;if ( is_search() ) {$join .=' LEFT JOIN '.$wpdb->postmeta. ' ON '. $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';}return $join;}add_filter('posts_join', 'cf_search_join' );function cf_search_where( $where ) {global $pagenow, $wpdb;    if ( is_search() ) {        $where = preg_replace(            "/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",            "(" . $wpdb->posts . ".post_title LIKE $1) OR (" . $wpdb->postmeta . ".meta_value LIKE $1 AND " . $wpdb->postmeta . ".meta_key IN ( 'pole1', 'pole2' ) )", $where );    }return $where;}add_filter( 'posts_where', 'cf_search_where' );function cf_search_distinct( $where ) {global $wpdb;if ( is_search() ) {return "DISTINCT";}return $where;}add_filter( 'posts_distinct', 'cf_search_distinct' );
       ```
   

Просмотр 2 ответов — с 16 по 17 (всего 17)

[←](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/?output_format=md)
[1](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/?output_format=md)
2

 *  [efess](https://ru.wordpress.org/support/users/efess/)
 * (@efess)
 * [2 года, 3 месяца назад](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/page/2/#post-12235233)
 * я дал вам ссылку на статью, чтобы вы поняли, что полнотекстовый поиск ( «по точному
   сочетанию поисковой фразы») не может быт ь быстрым. Быстрым может быть прямое
   или суррогатное решение по поиску отдельных слов из поисковой фразы.
 *  [Flector](https://ru.wordpress.org/support/users/flector/)
 * (@flector)
 * [2 года, 3 месяца назад](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/page/2/#post-12235234)
 * ставьте relevanssi и не ломайте себе мозг. мало того, что поиск будет и по произвольным
   полям, так он еще и куда лучше обычного поиска будет.

Просмотр 2 ответов — с 16 по 17 (всего 17)

[←](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/?output_format=md)
[1](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/?output_format=md)
2

 Тема «Настроить поиск по произвольным полям» закрыта для новых ответов.

## Метки

 * [поиск](https://ru.wordpress.org/support/topic-tag/%d0%bf%d0%be%d0%b8%d1%81%d0%ba/)

 * Форум: [Проблемы и решения](https://ru.wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 17 ответов
 * 5 участников
 * Последний ответ: [Flector](https://ru.wordpress.org/support/users/flector/)
 * Последняя активность: [2 года, 3 месяца назад](https://ru.wordpress.org/support/topic/%d0%bd%d0%b0%d1%81%d1%82%d1%80%d0%be%d0%b8%d1%82%d1%8c-%d0%bf%d0%be%d0%b8%d1%81%d0%ba-%d0%bf%d0%be-%d0%bf%d1%80%d0%be%d0%b8%d0%b7%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%bc-%d0%bf%d0%be%d0%bb%d1%8f/page/2/#post-12235234)
 * Статус: нерешённая

## Темы

### Самые популярные темы

### Темы без ответов

### Без вопроса

### Решённые

### Нерешённые

### Все темы
