函数文档

_get_block_templates_paths()

💡 云策文档标注

概述

_get_block_templates_paths() 函数用于在主题目录中递归查找所有嵌套的模板部件文件路径。它接受一个主题文件路径作为参数,返回一个包含所有 .html 文件路径的数组。

关键要点

  • 参数 $base_directory 是必需的字符串,表示主题的文件路径。
  • 返回值为字符串数组,包含所有模板部件文件的路径。
  • 函数使用静态变量缓存结果以提高性能。
  • 通过 RecursiveIteratorIterator 和 RegexIterator 递归遍历目录并匹配 .html 文件。

代码示例

function _get_block_templates_paths( $base_directory ) {
    static $template_path_list = array();
    if ( isset( $template_path_list[ $base_directory ] ) ) {
        return $template_path_list[ $base_directory ];
    }
    $path_list = array();
    if ( is_dir( $base_directory ) ) {
        $nested_files      = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $base_directory ) );
        $nested_html_files = new RegexIterator( $nested_files, '/^.+.html$/i', RecursiveRegexIterator::GET_MATCH );
        foreach ( $nested_html_files as $path => $file ) {
            $path_list[] = $path;
        }
    }
    $template_path_list[ $base_directory ] = $path_list;
    return $path_list;
}

注意事项

  • 函数从 WordPress 5.9.0 版本开始引入。
  • 相关函数 _get_block_templates_files() 用于从主题中检索模板文件。
  • 确保 $base_directory 是有效的目录路径,否则可能返回空数组。

📄 原文内容

Finds all nested template part file paths in a theme’s directory.

Parameters

$base_directorystringrequired
The theme’s file path.

Return

string[] A list of paths to all template part files.

Source

function _get_block_templates_paths( $base_directory ) {
	static $template_path_list = array();
	if ( isset( $template_path_list[ $base_directory ] ) ) {
		return $template_path_list[ $base_directory ];
	}
	$path_list = array();
	if ( is_dir( $base_directory ) ) {
		$nested_files      = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $base_directory ) );
		$nested_html_files = new RegexIterator( $nested_files, '/^.+.html$/i', RecursiveRegexIterator::GET_MATCH );
		foreach ( $nested_html_files as $path => $file ) {
			$path_list[] = $path;
		}
	}
	$template_path_list[ $base_directory ] = $path_list;
	return $path_list;
}

Changelog

Version Description
5.9.0 Introduced.