WP_REST_Term_Search_Handler::search_items()publicWP 5.6.0

Searches terms for a given search request.

Метод класса: WP_REST_Term_Search_Handler{}

Хуки из метода

Возвращает

Массив. Associative array containing found IDs and total count for the matching search results.

Использование

$WP_REST_Term_Search_Handler = new WP_REST_Term_Search_Handler();
$WP_REST_Term_Search_Handler->search_items( $request );
$request(WP_REST_Request) (обязательный)
Full REST request.

Список изменений

С версии 5.6.0 Введена.

Код WP_REST_Term_Search_Handler::search_items() WP 6.5.2

public function search_items( WP_REST_Request $request ) {
	$taxonomies = $request[ WP_REST_Search_Controller::PROP_SUBTYPE ];
	if ( in_array( WP_REST_Search_Controller::TYPE_ANY, $taxonomies, true ) ) {
		$taxonomies = $this->subtypes;
	}

	$page     = (int) $request['page'];
	$per_page = (int) $request['per_page'];

	$query_args = array(
		'taxonomy'   => $taxonomies,
		'hide_empty' => false,
		'offset'     => ( $page - 1 ) * $per_page,
		'number'     => $per_page,
	);

	if ( ! empty( $request['search'] ) ) {
		$query_args['search'] = $request['search'];
	}

	if ( ! empty( $request['exclude'] ) ) {
		$query_args['exclude'] = $request['exclude'];
	}

	if ( ! empty( $request['include'] ) ) {
		$query_args['include'] = $request['include'];
	}

	/**
	 * Filters the query arguments for a REST API term search request.
	 *
	 * Enables adding extra arguments or setting defaults for a term search request.
	 *
	 * @since 5.6.0
	 *
	 * @param array           $query_args Key value array of query var to query value.
	 * @param WP_REST_Request $request    The request used.
	 */
	$query_args = apply_filters( 'rest_term_search_query', $query_args, $request );

	$query       = new WP_Term_Query();
	$found_terms = $query->query( $query_args );
	$found_ids   = wp_list_pluck( $found_terms, 'term_id' );

	unset( $query_args['offset'], $query_args['number'] );

	$total = wp_count_terms( $query_args );

	// wp_count_terms() can return a falsey value when the term has no children.
	if ( ! $total ) {
		$total = 0;
	}

	return array(
		self::RESULT_IDS   => $found_ids,
		self::RESULT_TOTAL => $total,
	);
}