WordPress函数:list_files 获取指定目录下的文件列表

08月/25日/WordPress/浏览 212


WordPress 提供了一个函数,可以返回指定目录下的文件列表,而且可以遍历子目录,支持层级多达100层。


函数原型:


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


参数说明:


$folder (string) (可选的) 文件夹的完整路径。默认值:“”。


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


$exclusions (string[]) (可选的) 要跳过的文件夹和文件列表。默认值:array()


函数源码:


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;
}


使用举例:


$upload_dir = wp_upload_dir();
$folder = $upload_dir['basedir']
$files = list_files( $folder, 2 );
foreach ( $files as $file ) {
    if ( is_file( $file ) ) {
        $filesize = size_format( filesize( $file ) );
        $filename = basename( $file ); 
    }
    echo esc_html( $filename . "-" . $filesize );
}

发表评论

暂无评论,抢个沙发...

客服 工单