WP_Block_Templates_Registry::get_by_query()publicWP 6.7.0

Retrieves registered templates matching a query.

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

Хуков нет.

Возвращает

WP_Block_Template[]. Associative array of $template_name => $template pairs.

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

$WP_Block_Templates_Registry = new WP_Block_Templates_Registry();
$WP_Block_Templates_Registry->get_by_query( $query );
$query(массив)

Arguments to retrieve templates. Optional, empty by default.

По умолчанию: array()

  • slug__in(string[])
    List of slugs to include.

  • slug__not_in(string[])
    List of slugs to skip.

  • post_type(строка)
    Post type to get the templates for.

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

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

Код WP_Block_Templates_Registry::get_by_query() WP 6.7.1

public function get_by_query( $query = array() ) {
	$all_templates = $this->get_all_registered();

	if ( ! $all_templates ) {
		return array();
	}

	$query            = wp_parse_args(
		$query,
		array(
			'slug__in'     => array(),
			'slug__not_in' => array(),
			'post_type'    => '',
		)
	);
	$slugs_to_include = $query['slug__in'];
	$slugs_to_skip    = $query['slug__not_in'];
	$post_type        = $query['post_type'];

	$matching_templates = array();
	foreach ( $all_templates as $template_name => $template ) {
		if ( $slugs_to_include && ! in_array( $template->slug, $slugs_to_include, true ) ) {
			continue;
		}

		if ( $slugs_to_skip && in_array( $template->slug, $slugs_to_skip, true ) ) {
			continue;
		}

		if ( $post_type && ! in_array( $post_type, $template->post_types, true ) ) {
			continue;
		}

		$matching_templates[ $template_name ] = $template;
	}

	return $matching_templates;
}