_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.
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. |