WP_Block_Templates_Registry::get_by_query( array $query = array() ): WP_Block_Template[]

In this article

Retrieves registered templates matching a query.

Parameters

$queryarrayoptional
Arguments to retrieve templates. Optional, empty by default.
  • slug__in string[]
    List of slugs to include.
  • slug__not_in string[]
    List of slugs to skip.
  • post_type string
    Post type to get the templates for.

Default:array()

Return

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

Source

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;
}

Changelog

VersionDescription
6.7.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.