post_search_columns
Позволяет изменять список столбцов, по которым будет осуществляться поиск при использовании search в WP_Query.
По умолчанию WordPress ищет записи по трем полям: post_title, post_excerpt и post_content. Данный функционал появился благодаря тикету #43867. Пока поддерживаются только эти три поля, но, возможно, в будущем список расширится.
Использование
add_filter( 'post_search_columns', 'wp_kama_post_search_columns_filter', 10, 3 );
/**
* Function for `post_search_columns` filter-hook.
*
* @param string[] $search_columns Array of column names to be searched.
* @param string $search Text being searched.
* @param WP_Query $query The current WP_Query instance.
*
* @return string[]
*/
function wp_kama_post_search_columns_filter( $search_columns, $search, $query ){
// filter...
return $search_columns;
}
- $search_columns(string[])
- Массив названий столбцов, по которым нужно производить поиск.
- $search(строка)
- Строка (запрос) поиска.
- $query(WP_Query)
- Текущий экземпляр WP_Query.
Примеры
#1 Исключаем поле post_excerpt из поиска
Внутри колбэка для хука вы можете изменять список столбцов для поиска по своему усмотрению и возвращать измененный список. Например, вы можете исключить столбец post_excerpt из списка для ускорения поиска:
// Исключаем поле post_excerpt из поиска
add_filter( 'post_search_columns', 'wp_kama_post_search_columns_filter', 10, 3 );
/**
* Функция-обработчик фильтра `post_search_columns`.
*
* @param string[] $search_columns Массив имен столбцов, в которых искать.
* @param string $search Строка, по которой осуществляется поиск.
* @param WP_Query $query Текущий экземпляр WP_Query.
*
* @return string[] $search_columns Массив имен столбцов, в которых искать.
*/
function wp_kama_post_search_columns_filter( $search_columns, $search, $query ){
$search_columns = array_diff( $search_columns, [ 'post_excerpt' ] );
return $search_columns;
}
В этом примере функция обратного вызова удаляет столбец post_excerpt из списка столбцов для поиска, если он там есть.
#2 Демо: что содержат передаваемые в хук параметры
add_filter( 'post_search_columns', 'wp_kama_post_search_example', 10, 3 );
function wp_kama_post_search_example( $search_columns, $search, $query ){
print_r( $search_columns );
/*
Array (
[0] => post_title
[1] => post_excerpt
[2] => post_content
)
*/
var_dump( $search ); // string(15) "search for text"
print_r( $query ); // WP_Query Object
}
get_posts( [ 's'=>'search for text'] );
Список изменений
| С версии 6.2.0 | Введена. |
Где вызывается хук
post_search_columns
wp-includes/class-wp-query.php 1473
$search_columns = (array) apply_filters( 'post_search_columns', $search_columns, $query_vars['s'], $this );