WordPress как на ладони

post_search_columnsхук-фильтрWP 6.2.0

Позволяет изменять список столбцов, по которым будет осуществляться поиск при использовании 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

#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 из списка столбцов для поиска, если он там есть.

1

#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 Введена.

Где вызывается хук

WP_Query::parse_search()
post_search_columns
wp-includes/class-wp-query.php 1444
$search_columns = (array) apply_filters( 'post_search_columns', $search_columns, $q['s'], $this );

Где используется хук в WordPress

Использование не найдено.
Dan Zakirov 580air-wp.com
Машинист огневой зачистки
Редакторы: Kama 9665, campusboy 4791
2 комментария
    Войти