WP_Filesystem_Direct{} │ WP 2.5.0
Клас файлової системи WordPress для прямої (не FTP) роботи з файлами та папками через PHP.
Хуків немає.
Використання
$fs = new WP_Filesystem_Direct( null );
// use class methods
Методи
- public __construct( $arg )
- public atime( $file )
- public chdir($dir)
- public chgrp( $file, $group, $recursive = false )
- public chmod( $file, $mode = false, $recursive = false )
- public chown( $file, $owner, $recursive = false )
- public copy( $source, $destination, $overwrite = false, $mode = false )
- public cwd()
- public delete( $file, $recursive = false, $type = false )
- public dirlist( $path, $include_hidden = true, $recursive = false )
- public exists($file)
- public get_contents( $file )
- public get_contents_array( $file )
- public getchmod( $file )
- public group($file)
- public is_dir ($ path)
- public is_file( $file )
- public is_readable( $file )
- public is_writable( $file )
- public mkdir( $path, $chmod = false, $chown = false, $chgrp = false )
- public move( $source, $destination, $overwrite = false )
- public mtime( $file )
- public owner( $file )
- public put_contents( $file, $contents, $mode = false )
- public rmdir( $path, $recursive = false )
- public size( $file )
- public touch( $file, $time = 0, $atime = 0 )
Приклади
#1 Видалимо кеш папку нашого плагіна
Допустимо наш плагін створює кеш файли в папці /wp-content/cache/my-plugin
. Нам потрібно видалити цю папку та всі файли чи папки у ній.
$cache_dir = WP_CONTENT_DIR . '/cache/my-plugin';
// Підключимо необхідні файли, де знаходиться код WP_Filesystem
require_once ABSPATH. 'wp-admin/includes/class-wp-filesystem-base.php';
require_once ABSPATH. 'wp-admin/includes/class-wp-filesystem-direct.php';
$fs = new WP_Filesystem_Direct( null );
$ r = $ fs-> rmdir ($ cache_dir, true);
if (! $r) {
echo sprintf( 'ERROR: Could not recursively delete %s.', $cache_dir );
}
нотатки
список змін
Код WP_Filesystem_Direct{} WP Filesystem Direct{} WP 6.0.1
class WP_Filesystem_Direct extends WP_Filesystem_Base {
/**
* Constructor.
*
* @ Since 2.5.0
*
* @param mixed $arg Не використано.
*/
public function __construct( $arg ) {
$this->method = 'direct';
$this->errors = новий WP_Error();
}
/**
* Reads entire file into a string.
*
* @ Since 2.5.0
*
* @param string $file Name of the file to read.
* @return string|false Read data on success, false on failure.
*/
public function get_contents( $file ) {
return @file_get_contents($file);
}
/**
* Reads entire file into an array.
*
* @ Since 2.5.0
*
* @param string $file Path to the file.
* @return array|false File contents in array on success, false on failure.
*/
public function get_contents_array( $file ) {
return @ file ($ file);
}
/**
* Writes a string to a file.
*
* @ Since 2.5.0
*
* @param string $file Оберіть павуку до файлу, де він збирається data.
* @param string $contents The data to write.
* @param int|false $mode Optional. File permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
$ fp = @ Fopen ($ file, 'wb');
if (! $fp) {
return false;
}
mbstring_binary_safe_encoding();
$ data_length = strlen ($contents);
$bytes_written = fwrite( $fp, $contents );
reset_mbstring_encoding();
fclose ($ fp);
if ( $data_length !== $bytes_written ) {
return false;
}
$this->chmod( $file, $mode );
return true;
}
/**
* Gets the current working directory.
*
* @ Since 2.5.0
*
* @return string|false current working directory on success, false on failure.
*/
public function cwd() {
return getcwd();
}
/**
* Changes current directory.
*
* @ Since 2.5.0
*
* @param string $dir The New current directory.
* @return bool True on success, false on failure.
*/
public function chdir( $dir ) {
return @chdir($dir);
}
/**
* Зміни файлової групи.
*
* @ Since 2.5.0
*
* @param string $file Path to the file.
* @param string|int $group A group name or number.
* @param bool $recursive Optional. Якщо налаштуватися насправді, зміни файлу групи є recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chgrp( $file, $group, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
return false;
}
if ( ! $recursive ) {
return chgrp($file, $group);
}
if ( ! $this->is_dir( $file ) ) {
return chgrp($file, $group);
}
// Це directory, and we want recursive.
$ file = trailingslashit ($ file);
$filelist = $this->dirlist($file);
foreach ( $filelist as $filename ) {
$this->chgrp( $file . $filename, $group, $recursive );
}
return true;
}
/**
* Зміни файлусистеми змін.
*
* @ Since 2.5.0
*
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. Якщо налаштуватися на true, зміни файлу ресурсів є recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $mode ) {
if ( $this->is_file( $file ) ) {
$mode = FS_CHMOD_FILE;
} elseif ( $this->is_dir( $file ) ) {
$mode = FS_CHMOD_DIR;
} else {
return false;
}
}
if ( ! $recursive || ! $this->is_dir( $file ) ) {
return chmod($file, $mode);
}
// Це directory, and we want recursive.
$ file = trailingslashit ($ file);
$filelist = $this->dirlist($file);
foreach ((array) $filelist as $filename => $filemeta) {
$this->chmod( $file . $filename, $mode, $recursive );
}
return true;
}
/**
* Змінити власника файлу або директорії.
*
* @ Since 2.5.0
*
* @param string $file Path to the file або directory.
* @param string|int $owner A user name або number.
* @param bool $recursive Optional. Якщо налаштуватися насправді, зміни файлу власника є recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chown( $file, $owner, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
return false;
}
if ( ! $recursive ) {
return chown ($ file, $ owner);
}
if ( ! $this->is_dir( $file ) ) {
return chown ($ file, $ owner);
}
// Це directory, and we want recursive.
$filelist = $this->dirlist($file);
foreach ( $filelist as $filename ) {
$this->chown( $file . '/' . $filename, $owner, $recursive );
}
return true;
}
/**
* Gets the file owner.
*
* @ Since 2.5.0
*
* @param string $file Path to the file.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
$owneruid = @fileowner($file);
if ( ! $owneruid ) {
return false;
}
if ( ! function_exists( 'posix_getpwuid' ) ) {
return $owneruid;
}
$ownerarray = posix_getpwuid($owneruid);
if (! $ownerarray) {
return false;
}
return $ownerarray['name'];
}
/**
* Gets the permissions of the specified file або filepath в їхньому octal format.
*
* FIXME не вдається допустити errors in fileperms()
*
* @ Since 2.5.0
*
* @param string $file Path to the file.
* @Return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
return substr(decoct( @fileperms( $file ) ), -3 );
}