Функция wp_delete_file_from_directory()
позволяет удалить указанный файл из определенной директории, но только если файл находится именно в этой директории или в ее подкаталогах. Это позволяет избежать случайного удаления файлов, находящихся в других местах на сервере.
wp_delete_file_from_directory( string $file, string $directory ): bool
Параметры
$file
(строка, обязательный) — Абсолютный путь к файлу, который необходимо удалить.$directory
(строка, обязательный) — Абсолютный путь к директории, в которой находится файл.
Возвращаемое значение
bool
—true
в случае успешного удаления файла,false
в случае неудачи.
Как работает функция
- Преобразует указанные пути к файлу и директории в абсолютные с помощью функции
realpath()
. - Проверяет, находится ли указанный файл внутри указанной директории.
- Вызывает функцию
wp_delete_file()
, чтобы удалить файл, если он находится в нужной директории.
Пример 1: Удаление файла из каталога загрузок
В этом примере мы удаляем файл test.html
из каталога загрузок:
$upldir_info = wp_get_upload_dir();
$uploads_dir = $upldir_info['basedir']; // Путь к каталогу загрузок
$file_to_delete = "$uploads_dir/test.html";
$result = wp_delete_file_from_directory( $file_to_delete, $uploads_dir );
if ( $result ) {
echo 'Файл успешно удален.';
} else {
echo 'Не удалось удалить файл.';
}
В этом коде мы получаем путь к каталогу загрузок с помощью функции wp_get_upload_dir()
и передаем путь к файлу и директории в wp_delete_file_from_directory()
. Если файл успешно удален, выводится соответствующее сообщение.
Пример 2: Удаление файла из вложенной директории
Функция также позволяет удалять файлы из вложенных папок:
$uploads_info = wp_get_upload_dir();
$uploads_dir = $uploads_info['basedir']; // Путь к каталогу загрузок
$file_to_delete = "$uploads_dir/2023/images/sample-image.jpg"; // Файл в вложенной папке
$result = wp_delete_file_from_directory( $file_to_delete, $uploads_dir );
if ( $result ) {
echo 'Файл из вложенной директории успешно удален.';
} else {
echo 'Не удалось удалить файл из вложенной директории.';
}
Здесь мы пытаемся удалить файл sample-image.jpg
, который находится в подкаталоге 2023/images
. Функция успешно проверит, что файл находится в указанной директории, и удалит его.
Пример 3: Попытка удалить файл вне директории
Если вы попытаетесь удалить файл, который находится вне указанной директории, функция вернет false
:
$file_to_delete = '/var/www/example/wp-content/plugins/plugin-file.php'; // Файл вне каталога загрузок
$result = wp_delete_file_from_directory( $file_to_delete, $uploads_dir );
if ( $result ) {
echo 'Файл успешно удален.';
} else {
echo 'Не удалось удалить файл, так как он не находится в указанной директории.';
}
В этом случае функция не сможет удалить файл, так как он находится вне директории загрузок, и вернет false
.
Заключение
Функция wp_delete_file_from_directory()
обеспечивает безопасное удаление файлов, гарантируя, что файл находится в указанной директории. Это особенно полезно для управления загрузками и предотвращения случайного удаления важных файлов. Используя эту функцию, вы можете легко контролировать и управлять файлами в вашей установке WordPress.