WordPress Version: 4.3
/**
* Retrieve path of page template in current or parent template.
*
* Will first look for the specifically assigned page template.
* Then will search for 'page-{slug}.php', followed by 'page-{id}.php',
* and finally 'page.php'.
*
* The template path is filterable via the dynamic {@see '$type_template'} hook,
* e.g. 'page_template'.
*
* @since 1.5.0
*
* @see get_query_template()
*
* @return string Full path to page template file.
*/
function get_page_template()
{
$id = get_queried_object_id();
$template = get_page_template_slug();
$pagename = get_query_var('pagename');
if (!$pagename && $id) {
// If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
$post = get_queried_object();
if ($post) {
$pagename = $post->post_name;
}
}
$templates = array();
if ($template && 0 === validate_file($template)) {
$templates[] = $template;
}
if ($pagename) {
$templates[] = "page-{$pagename}.php";
}
if ($id) {
$templates[] = "page-{$id}.php";
}
$templates[] = 'page.php';
return get_query_template('page', $templates);
}