get_plugin_files()
云策文档标注
概述
get_plugin_files() 函数用于获取指定插件的文件列表,返回相对于插件根目录的文件名数组。它通过扫描插件目录并排除特定文件夹(如 node_modules、vendor 等)来实现。
关键要点
- 参数 $plugin 是必需的,表示相对于 plugins 目录的插件文件路径。
- 返回值是字符串数组,包含相对于插件根目录的文件名。
- 函数内部使用 list_files() 扫描目录,并应用 plugin_files_exclusions 过滤器来排除特定目录和文件。
- 相关函数包括 list_files()、plugin_basename() 和 apply_filters()。
代码示例
function get_plugin_files( $plugin ) {
$plugin_file = WP_PLUGIN_DIR . '/' . $plugin;
$dir = dirname( $plugin_file );
$plugin_files = array( plugin_basename( $plugin_file ) );
if ( is_dir( $dir ) && WP_PLUGIN_DIR !== $dir ) {
/**
* Filters the array of excluded directories and files while scanning the folder.
*
* @since 4.9.0
*
* @param string[] $exclusions Array of excluded directories and files.
*/
$exclusions = (array) apply_filters( 'plugin_files_exclusions', array( 'CVS', 'node_modules', 'vendor', 'bower_components' ) );
$list_files = list_files( $dir, 100, $exclusions );
$list_files = array_map( 'plugin_basename', $list_files );
$plugin_files = array_merge( $plugin_files, $list_files );
$plugin_files = array_values( array_unique( $plugin_files ) );
}
return $plugin_files;
}注意事项
- 函数从 WordPress 2.8.0 版本引入。
- 使用 plugin_files_exclusions 过滤器可以自定义扫描时排除的目录和文件。
- 函数主要用于 wp_edit_theme_plugin_file() 等场景。
原文内容
Gets a list of a plugin’s files.
Parameters
$pluginstringrequired-
Path to the plugin file relative to the plugins directory.
Source
function get_plugin_files( $plugin ) {
$plugin_file = WP_PLUGIN_DIR . '/' . $plugin;
$dir = dirname( $plugin_file );
$plugin_files = array( plugin_basename( $plugin_file ) );
if ( is_dir( $dir ) && WP_PLUGIN_DIR !== $dir ) {
/**
* Filters the array of excluded directories and files while scanning the folder.
*
* @since 4.9.0
*
* @param string[] $exclusions Array of excluded directories and files.
*/
$exclusions = (array) apply_filters( 'plugin_files_exclusions', array( 'CVS', 'node_modules', 'vendor', 'bower_components' ) );
$list_files = list_files( $dir, 100, $exclusions );
$list_files = array_map( 'plugin_basename', $list_files );
$plugin_files = array_merge( $plugin_files, $list_files );
$plugin_files = array_values( array_unique( $plugin_files ) );
}
return $plugin_files;
}
Hooks
- apply_filters( ‘plugin_files_exclusions’, string[] $exclusions )
-
Filters the array of excluded directories and files while scanning the folder.
Changelog
| Version | Description |
|---|---|
| 2.8.0 | Introduced. |