Yoast\WP\SEO\Bulk_Editor\Infrastructure\Posts

Indexable_Posts_Collector::build_query │ private │ Yoast 1.0

Builds the filtered indexable query for the given query, without ordering or paging.

Built fresh for each use so the same filters back both the total count and the page of rows.

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

Хуков нет.

Возвращает

ORM. The filtered query.

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

// private - только в коде основоного (родительского) класса
$result = $this->build_query( $query ): ORM;
$query(Posts_Query) (обязательный)
The query describing the filters to apply.

Код Indexable_Posts_Collector::build_query() Yoast 28.7

private function build_query( Posts_Query $query ): ORM {
	$builder = $this->indexable_repository->query()
		->where( 'object_type', 'post' )
		->where( 'object_sub_type', $query->get_content_type() )
		->where_in( 'post_status', $query->get_statuses() )
		// Password-protected posts (is_protected) are not shown in bulk editing.
		->where( 'is_protected', 0 );

	if ( $query->has_author_filter() ) {
		$builder->where( 'author_id', $query->get_author_id() );
	}

	if ( $query->has_include() ) {
		$builder->where_in( 'object_id', $query->get_include_ids() );
	}

	if ( $query->has_search() ) {
		$this->apply_search( $builder, $query->get_search() );
	}

	if ( $query->get_needs_improvement() !== [] ) {
		$this->apply_needs_improvement( $builder, $query->get_needs_improvement(), $query->are_scores_enabled(), $query->get_content_type() );
	}

	return $builder;
}