Scans a directory for files of a certain extension.
Parameters
$path
stringrequired- Absolute path to search.
$extensions
array|string|nulloptional- Array of extensions to find, string of a single extension, or null for all extensions.
Default:
null
$depth
intoptional- How many levels deep to search for files. Accepts 0, 1+, or -1 (infinite depth). Default 0.
$relative_path
stringoptional- The basename of the absolute path. Used to control the returned path for the found files, particularly when this function recurses to lower depths.
Default:
''
Source
private static function scandir( $path, $extensions = null, $depth = 0, $relative_path = '' ) { if ( ! is_dir( $path ) ) { return false; } if ( $extensions ) { $extensions = (array) $extensions; $_extensions = implode( '|', $extensions ); } $relative_path = trailingslashit( $relative_path ); if ( '/' === $relative_path ) { $relative_path = ''; } $results = scandir( $path ); $files = array(); /** * Filters the array of excluded directories and files while scanning theme folder. * * @since 4.7.4 * * @param string[] $exclusions Array of excluded directories and files. */ $exclusions = (array) apply_filters( 'theme_scandir_exclusions', array( 'CVS', 'node_modules', 'vendor', 'bower_components' ) ); foreach ( $results as $result ) { if ( '.' === $result[0] || in_array( $result, $exclusions, true ) ) { continue; } if ( is_dir( $path . '/' . $result ) ) { if ( ! $depth ) { continue; } $found = self::scandir( $path . '/' . $result, $extensions, $depth - 1, $relative_path . $result ); $files = array_merge_recursive( $files, $found ); } elseif ( ! $extensions || preg_match( '~\.(' . $_extensions . ')$~', $result ) ) { $files[ $relative_path . $result ] = $path . '/' . $result; } } return $files; }
Hooks
- apply_filters( ‘theme_scandir_exclusions’,
string[] $exclusions ) Filters the array of excluded directories and files while scanning theme folder.
Changelog
Version | Description |
---|---|
3.4.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.