Retrieves registered templates matching a query.
$queryarrayoptional
slug__in string[]slug__not_in string[]post_type stringDefault:array()
$template_name => $template pairs.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;
}
| Version | Description |
|---|---|
| 6.7.0 | Introduced. |
© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_block_templates_registry/get_by_query