WP_Filesystem_Direct::dirlist( string $path, bool $include_hidden = true, bool $recursive = false )

Gets details for files in a directory or a specific file.


Parameters

$path

(Required) Path to directory or file.

$include_hidden

(Optional) Whether to include details of hidden ("." prefixed) files.<br>

Default value: true

$recursive

(Optional) Whether to recursively include file details in nested directories.<br>

Default value: false


Return

(array|false) Array of files. False if unable to list directory contents.<br>

  • 'name'
    (string) Name of the file or directory.<br>
  • 'perms'
    (string) *nix representation of permissions.<br>
  • 'permsn'
    (string) Octal representation of permissions.<br>
  • 'owner'
    (string) Owner name or ID.<br>
  • 'size'
    (int) Size of file in bytes.<br>
  • 'lastmodunix'
    (int) Last modified unix timestamp.<br>
  • 'lastmod'
    (mixed) Last modified month (3 letter) and day (without leading 0).<br>
  • 'time'
    (int) Last modified time.<br>
  • 'type'
    (string) Type of resource. 'f' for file, 'd' for directory.<br>
  • 'files'
    (mixed) If a directory and $recursive is true, contains another array of files.<br>


Source

File: wp-admin/includes/class-wp-filesystem-direct.php

	public function dirlist($path, $include_hidden = true, $recursive = false) {
		if ( $this->is_file($path) ) {
			$limit_file = basename($path);
			$path = dirname($path);
		} else {
			$limit_file = false;
		}

		if ( ! $this->is_dir($path) )
			return false;

		$dir = @dir($path);
		if ( ! $dir )
			return false;

		$ret = array();

		while (false !== ($entry = $dir->read()) ) {
			$struc = array();
			$struc['name'] = $entry;

			if ( '.' == $struc['name'] || '..' == $struc['name'] )
				continue;

			if ( ! $include_hidden && '.' == $struc['name'][0] )
				continue;

			if ( $limit_file && $struc['name'] != $limit_file)
				continue;

			$struc['perms'] 	= $this->gethchmod($path.'/'.$entry);
			$struc['permsn']	= $this->getnumchmodfromh($struc['perms']);
			$struc['number'] 	= false;
			$struc['owner']    	= $this->owner($path.'/'.$entry);
			$struc['group']    	= $this->group($path.'/'.$entry);
			$struc['size']    	= $this->size($path.'/'.$entry);
			$struc['lastmodunix']= $this->mtime($path.'/'.$entry);
			$struc['lastmod']   = date('M j',$struc['lastmodunix']);
			$struc['time']    	= date('h:i:s',$struc['lastmodunix']);
			$struc['type']		= $this->is_dir($path.'/'.$entry) ? 'd' : 'f';

			if ( 'd' == $struc['type'] ) {
				if ( $recursive )
					$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $include_hidden, $recursive);
				else
					$struc['files'] = array();
			}

			$ret[ $struc['name'] ] = $struc;
		}
		$dir->close();
		unset($dir);
		return $ret;
	}


Changelog

Changelog
Version Description
2.5.0 Introduced.