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, $q['s'], $this );