get_template_hierarchy

函数
get_template_hierarchy ( $slug, $is_custom = false, $template_prefix = '' )
参数
  • (string) $slug The template slug to be created.
    Required:
  • (bool) $is_custom Optional. Indicates if a template is custom or part of the template hierarchy. Default false.
    Required:
    Default: false
  • (string) $template_prefix Optional. The template prefix for the created template. Used to extract the main template type, e.g. in `taxonomy-books` the `taxonomy` is extracted. Default empty string.
    Required:
    Default: (empty)
返回值
  • (string[]) The template hierarchy.
定义位置
相关方法
get_page_hierarchy_get_term_hierarchyget_template_partget_template_directoryget_template
引入
6.1.0
弃用
-

get_template_hierarchy: 这个函数检索WordPress用来显示一个页面的模板文件的列表。它需要一个参数:作为起点使用的模板的名称。它返回一个模板文件名的数组。

获取要创建的给定模板slug的模板层次。

注意:总是添加`index`作为最后的后备模板。

function get_template_hierarchy( $slug, $is_custom = false, $template_prefix = '' ) {
	if ( 'index' === $slug ) {
		return array( 'index' );
	}
	if ( $is_custom ) {
		return array( 'page', 'singular', 'index' );
	}
	if ( 'front-page' === $slug ) {
		return array( 'front-page', 'home', 'index' );
	}

	$template_hierarchy = array( $slug );

	// Most default templates don't have `$template_prefix` assigned.
	if ( $template_prefix ) {
		list( $type ) = explode( '-', $template_prefix );
		// These checks are needed because the `$slug` above is always added.
		if ( ! in_array( $template_prefix, array( $slug, $type ), true ) ) {
			$template_hierarchy[] = $template_prefix;
		}
		if ( $slug !== $type ) {
			$template_hierarchy[] = $type;
		}
	}

	// Handle `archive` template.
	if (
		str_starts_with( $slug, 'author' ) ||
		str_starts_with( $slug, 'taxonomy' ) ||
		str_starts_with( $slug, 'category' ) ||
		str_starts_with( $slug, 'tag' ) ||
		'date' === $slug
	) {
		$template_hierarchy[] = 'archive';
	}
	// Handle `single` template.
	if ( 'attachment' === $slug ) {
		$template_hierarchy[] = 'single';
	}

	// Handle `singular` template.
	if (
		str_starts_with( $slug, 'single' ) ||
		str_starts_with( $slug, 'page' ) ||
		'attachment' === $slug
	) {
		$template_hierarchy[] = 'singular';
	}

	$template_hierarchy[] = 'index';

	return $template_hierarchy;
};

常见问题

FAQs
查看更多 >