Retrieves registered templates matching a query.
Parameters
$query
arrayoptional- 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
stringPost type to get the templates for.
Default:
array()
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
Version | Description |
---|---|
6.7.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.