Класс WP_Filesystem_Direct
предоставляет методы для прямого (не FTP) взаимодействия с файловой системой WordPress. Он используется для работы с файлами и директориями через PHP и является частью системы управления файловой системой WordPress, основанной на классе WP_Filesystem_Base
.
Использование
Для начала работы с классом вам необходимо создать его экземпляр:
$fs = new WP_Filesystem_Direct( null );
После этого вы можете использовать методы класса для выполнения различных операций с файлами и директориями.
Методы класса
Класс WP_Filesystem_Direct
наследует методы от родительского класса WP_Filesystem_Base
, включая:
__construct($arg)
atime($file)
chdir($dir)
chgrp($file, $group, $recursive = false)
chmod($file, $mode = false, $recursive = false)
chown($file, $owner, $recursive = false)
copy($source, $destination, $overwrite = false, $mode = false)
cwd()
delete($file, $recursive = false, $type = false)
dirlist($path, $include_hidden = true, $recursive = false)
exists($path)
get_contents($file)
get_contents_array($file)
getchmod($file)
group($file)
is_dir($path)
is_file($file)
is_readable($file)
is_writable($path)
mkdir($path, $chmod = false, $chown = false, $chgrp = false)
move($source, $destination, $overwrite = false)
mtime($file)
owner($file)
put_contents($file, $contents, $mode = false)
rmdir($path, $recursive = false)
size($file)
touch($file, $time = 0, $atime = 0)
Примеры использования
Пример 1: Удаление кэша плагина
Предположим, ваш плагин создает кэш-файлы в папке /wp-content/cache/my-plugin
. Вам нужно удалить эту папку и все файлы или папки в ней. Вот как это можно сделать с использованием класса WP_Filesystem_Direct
:
$cache_dir = WP_CONTENT_DIR . '/cache/my-plugin';
// Подключаем необходимые файлы
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);
} else {
echo sprintf('Successfully deleted %s.', $cache_dir);
}
Пример 2: Копирование файла
Класс WP_Filesystem_Direct
также позволяет копировать файлы. Вот пример копирования файла:
$source_file = WP_CONTENT_DIR . '/uploads/source-file.txt';
$destination_file = WP_CONTENT_DIR . '/uploads/destination-file.txt';
// Создаем экземпляр класса
$fs = new WP_Filesystem_Direct(null);
// Копируем файл
$result = $fs->copy($source_file, $destination_file);
if ($result) {
echo 'File copied successfully.';
} else {
echo 'Failed to copy the file.';
}
Пример 3: Создание директории
Если вам нужно создать новую директорию, вы можете использовать метод mkdir
:
$new_dir = WP_CONTENT_DIR . '/uploads/new-directory';
// Создаем экземпляр класса
$fs = new WP_Filesystem_Direct(null);
// Создаем директорию с правами 0755
$result = $fs->mkdir($new_dir, 0755);
if ($result) {
echo 'Directory created successfully.';
} else {
echo 'Failed to create directory.';
}
Пример 4: Получение содержимого файла
Чтобы получить содержимое файла, используйте метод get_contents
:
$file = WP_CONTENT_DIR . '/uploads/sample-file.txt';
// Создаем экземпляр класса
$fs = new WP_Filesystem_Direct(null);
// Получаем содержимое файла
$content = $fs->get_contents($file);
if ($content !== false) {
echo 'File content: ' . $content;
} else {
echo 'Failed to get file contents.';
}
Заключение
Класс WP_Filesystem_Direct
является полезным инструментом для работы с файловой системой WordPress, предоставляя разработчикам простой и эффективный способ взаимодействия с файлами и директориями. С помощью его методов можно легко выполнять такие операции, как создание, удаление, копирование и получение содержимого файлов.