get_page_templates( WP_Post|null $post = null, string $post_type = 'page' ): string[]

Gets the page templates available in this theme.


Parameters

$post WP_Post|null Optional
The post being edited, provided for context.

Default: null

$post_type string Optional
Post type to get the templates for. Default 'page'.

Default: 'page'


Top ↑

Return

string[] Array of template file names keyed by the template header name.


Top ↑

More Information

The function searches all the current theme’s template files for the commented “Template Name: name of template”. See also wp_get_theme() and the wp_get_theme() ->get_page_templates() method of the WP_Theme class.


Top ↑

Source

File: wp-admin/includes/theme.php. View all references

function get_page_templates( $post = null, $post_type = 'page' ) {
	return array_flip( wp_get_theme()->get_page_templates( $post, $post_type ) );
}


Top ↑

Changelog

Changelog
Version Description
4.7.0 Added the $post_type parameter.
1.5.0 Introduced.

Top ↑

User Contributed Notes

  1. Skip to note 1 content
    Contributed by Codex

    Output a list of available templates

    The following code snippet loops through the available page templates and outputs their template names and the filenames.

    <?php 
    $templates = wp_get_theme()->get_page_templates();
    print_r( $templates );
    ?>

    Returns:

    Array (
    	[template-contact.php] => Contact
    	[template-landing-page.php] => Landing Page
    	[template-another-template.php] => Another Template
    )

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