Функция wp_delete_file()
используется для удаления файлов в WordPress. Она представляет собой обертку вокруг стандартной функции PHP unlink()
, которая удаляет файл из файловой системы. Однако, перед вызовом unlink()
, в wp_delete_file()
применяется фильтр wp_delete_file
, что позволяет разработчикам модифицировать или предотвратить удаление файла.
wp_delete_file( string $file )
Параметры
$file
(строка, обязательный) — Путь к файлу, который необходимо удалить.
Возвращаемое значение
null
— Ничего не возвращает, функция завершает работу после удаления файла.
Хуки
wp_delete_file
— Фильтр, позволяющий изменить путь к удаляемому файлу или запретить его удаление.
Пример 1: Удаление файла из каталога загрузок
В этом примере демонстрируется, как удалить файл test.txt
из каталога загрузок WordPress.
// Получаем путь к директории загрузок
$upload_info = wp_get_upload_dir();
// Формируем полный путь к файлу
$file = $upload_info['basedir'] . '/test.txt';
// Удаляем файл
wp_delete_file( $file );
Пример 2: Использование фильтра для предотвращения удаления файла
Здесь мы запрещаем удаление файлов с именем test.txt
с помощью фильтра wp_delete_file
.
// Добавляем фильтр для блокировки удаления файла с именем test.txt
add_filter( 'wp_delete_file', function ( $file ) {
if ( 'test.txt' === basename( $file ) ) {
// Возвращаем пустую строку, чтобы отменить удаление
return '';
}
// Если это не test.txt, возвращаем путь к файлу для удаления
return $file;
} );
// Пробуем удалить файл
$upload_info = wp_get_upload_dir();
$file = $upload_info['basedir'] . '/test.txt';
wp_delete_file( $file );
В этом примере, даже если вы попытаетесь удалить файл test.txt
, он не будет удален благодаря фильтру, который проверяет имя файла перед вызовом функции unlink()
.
Пример 3: Удаление изображений из конкретной папки
Допустим, вам нужно удалить изображение по конкретному пути:
// Указываем путь к файлу
$file_path = "/home/public_html/wp-content/uploads/2020/04/photo_img_1-8.png";
// Удаляем файл
wp_delete_file( $file_path );
Этот пример показывает, как удалить файл изображения в папке uploads
.
Заключение
Функция wp_delete_file()
— это удобный инструмент для безопасного удаления файлов в WordPress. Благодаря встроенному фильтру wp_delete_file
, разработчики могут контролировать процесс удаления файлов, изменяя путь или полностью предотвращая удаление определенных файлов.