Оказывается, что да, ElasticPress отображает все мета-поля автоматически, но по умолчанию он не ищет их .
Согласно документации (https://github.com/10up/ElasticPress),
"Ниже приведены специальные параметры, которые поддерживаются только ElasticPress.
search_fields (array)
If not specified, defaults to array( 'post_title', 'post_excerpt', 'post_content' ).
Это была моя проблема. Чтобы решить, вы должны указать ElasticPress, какие поля искать.
Документация ElasticPress включает этот пример с использованием WP_Query:
new WP_Query( array(
's' => 'meta search phrase',
'search_fields' => array(
'post_title',
'post_content',
'post_excerpt',
'meta' => array( 'meta_key_1', 'meta_key_2' ),
),
) );
Мне действительно нужно было подключиться к существующему поисковому запросу, поэтому вот пример того, что я сделал с помощью действия pre_get_posts:
function my_search_filter($query) {
if ( !is_admin() && $query->is_main_query() ) {
if ($query->is_search() ) {
$query->set('search_fields', array(
'post_title',
'meta' => array( 'bin_part_number',
'shelf_part_number',
)));
}
}
}
add_action('pre_get_posts','my_search_filter',1);