WP_Filesystem_Direct::delete()publicWP 2.5.0

Deletes a file or directory.

Method of the class: WP_Filesystem_Direct{}

No Hooks.

Return

true|false. True on success, false on failure.

Usage

$WP_Filesystem_Direct = new WP_Filesystem_Direct();
$WP_Filesystem_Direct->delete( $file, $recursive, $type );
$file(string) (required)
Path to the file or directory.
$recursive(true|false)
If set to true, deletes files and folders recursively.
Default: false
$type(string|false)
Type of resource. 'f' for file, 'd' for directory.
Default: false

Changelog

Since 2.5.0 Introduced.

WP_Filesystem_Direct::delete() code WP 6.5.2

public function delete( $file, $recursive = false, $type = false ) {
	if ( empty( $file ) ) {
		// Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
		return false;
	}

	$file = str_replace( '\\', '/', $file ); // For Win32, occasional problems deleting files otherwise.

	if ( 'f' === $type || $this->is_file( $file ) ) {
		return @unlink( $file );
	}

	if ( ! $recursive && $this->is_dir( $file ) ) {
		return @rmdir( $file );
	}

	// At this point it's a folder, and we're in recursive mode.
	$file     = trailingslashit( $file );
	$filelist = $this->dirlist( $file, true );

	$retval = true;

	if ( is_array( $filelist ) ) {
		foreach ( $filelist as $filename => $fileinfo ) {
			if ( ! $this->delete( $file . $filename, $recursive, $fileinfo['type'] ) ) {
				$retval = false;
			}
		}
	}

	if ( file_exists( $file ) && ! @rmdir( $file ) ) {
		$retval = false;
	}

	return $retval;
}