返回指定文件夹中所有文件的列表,以及最多100级深度的所有子目录。

原型

list_files( string $folder = '', int $levels = 100, array $exclusions = array() )

描述

递归的深度可以由$ levels参数控制。

参数

$folder (string) (Optional)  文件夹的完整路径。

$levels (int) (Optional)  要遵循的文件夹级别,默认值为100(PHP循环限制)。

$exclusions (array) (Optional)  要跳过的文件夹和文件列表。

返回值

(bool|array)  失败时为假,其他文件数组

源文件

路径:wp-admin/includes/file.php

<?php
...
function list_files( $folder = '', $levels = 100, $exclusions = array() ) {
	if ( empty( $folder ) ) {
		return false;
	}
	$folder = trailingslashit( $folder );
	if ( ! $levels ) {
		return false;
	}
	$files = array();
	$dir = @opendir( $folder );
	if ( $dir ) {
		while ( ( $file = readdir( $dir ) ) !== false ) {
			// Skip current and parent folder links.
			if ( in_array( $file, array( '.', '..' ), true ) ) {
				continue;
			}
			// Skip hidden and excluded files.
			if ( '.' === $file[0] || in_array( $file, $exclusions, true ) ) {
				continue;
			}
			if ( is_dir( $folder . $file ) ) {
				$files2 = list_files( $folder . $file, $levels - 1 );
				if ( $files2 ) {
					$files = array_merge($files, $files2 );
				} else {
					$files[] = $folder . $file . '/';
				}
			} else {
				$files[] = $folder . $file;
			}
		}
	}
	@closedir( $dir );
	return $files;
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/list_files/