WP_Tax_Query::clean_query()privateWP 3.2.0

Validates a single query.

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

Хуков нет.

Возвращает

null. Ничего (null).

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

// private - только в коде основоного (родительского) класса
$result = $this->clean_query( $query );
$query(массив) (обязательный) (передается по ссылке — &)
The single query. Passed by reference.

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

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

Код WP_Tax_Query::clean_query() WP 6.5.2

private function clean_query( &$query ) {
	if ( empty( $query['taxonomy'] ) ) {
		if ( 'term_taxonomy_id' !== $query['field'] ) {
			$query = new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
			return;
		}

		// So long as there are shared terms, 'include_children' requires that a taxonomy is set.
		$query['include_children'] = false;
	} elseif ( ! taxonomy_exists( $query['taxonomy'] ) ) {
		$query = new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) );
		return;
	}

	if ( 'slug' === $query['field'] || 'name' === $query['field'] ) {
		$query['terms'] = array_unique( (array) $query['terms'] );
	} else {
		$query['terms'] = wp_parse_id_list( $query['terms'] );
	}

	if ( is_taxonomy_hierarchical( $query['taxonomy'] ) && $query['include_children'] ) {
		$this->transform_query( $query, 'term_id' );

		if ( is_wp_error( $query ) ) {
			return;
		}

		$children = array();
		foreach ( $query['terms'] as $term ) {
			$children   = array_merge( $children, get_term_children( $term, $query['taxonomy'] ) );
			$children[] = $term;
		}
		$query['terms'] = $children;
	}

	$this->transform_query( $query, 'term_taxonomy_id' );
}