get_page_template

函数
get_page_template ( No parameters )
返回值
  • (string) Full path to page template file.
相关
  • get_query_template()
定义位置
相关方法
get_paged_templateget_page_templatesget_tag_templateget_date_templateget_page_template_slug
引入
1.5.0
弃用
-

get_page_template函数是一个WordPress函数,用于检索一个页面的模板名称: 该函数接受一个参数,即你想检索模板名称的页面的ID: 该函数返回该页面的模板名称。

在当前模板或父模板中检索页面模板的路径。

注意:对于区块主题,使用locate_block_template函数代替。

这个模板的层次结构看起来像:
1. {Page Template}.php
2. page-{page_name}.php
3. page-{id}.php
4. page.php

这方面的一个例子是:

1. page-templates/full-width.php
2. page-about.php
3. page-4.php
4. page.php

模板层次和模板路径可通过{@see ‘$type_template_hierarchy’}和{@see ‘$type_template’}动态钩子过滤,其中`$type’为’page’。
和{@see ‘$type_template’}动态钩子,其中`$type`是’page’。

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 ) {
		$pagename_decoded = urldecode( $pagename );
		if ( $pagename_decoded !== $pagename ) {
			$templates[] = "page-{$pagename_decoded}.php";
		}
		$templates[] = "page-{$pagename}.php";
	}
	if ( $id ) {
		$templates[] = "page-{$id}.php";
	}
	$templates[] = 'page.php';

	return get_query_template( 'page', $templates );
}

常见问题

FAQs
查看更多 >