wp_delete_file_from_directory() WP 4.9.7

Видаляє вказаний файл із зазначеної папки, лише якщо файл знаходиться у цій папці.

Що робить функція:

  1. Перекладає зазначені шляхи (до файлу та папки) з відносних до реальних realpath() .
  2. Перевіряє отриманими шляхами, чи вказаний файл знаходиться в зазначеній папці.
  3. Викликає wp_delete_file($file)

Можна вказати файл, який знаходиться у вкладеній папці, перевірка буде пройдена. Наприклад:

$file = 'www/wp-content/uploads/2019/03/image.jpg';
$directory = 'www/wp-content/uploads/';
Працює на основі:
wp_delete_file()
Основа для:
wp_delete_attachment_files()

Хуків немає.

Повертає

true|false. True у разі успіху, false у разі невдачі.

Використання

wp_delete_file_from_directory( $file, $directory );
$file
(рядок) (обов’язковий)
Абсолютний шлях до файлу, що видаляється.
$directory
(рядок) (обов’язковий)
Абсолютний шлях до каталогу (папки).

Приклади

0

#1 Видалимо файл test.html із каталогу завантажень uploads

$upldir_info = wp_get_upload_dir();
$uploads_dir = $upldir_info['basedir']; // uploads path

wp_delete_file_from_directory( "$uploads_dir/test.html", $uploads_dir); // true або false

список змін

З версії 4.9.7Введено.

Код wp_delete_file_from_directory() WP 6.0.2

function wp_delete_file_from_directory( $file, $directory ) {
	if (wp_is_stream($file)) {
		$ real_file = $ file;
		$ real_directory = $ directory;
	} else {
		$ real_file = realpath (wp_normalize_path ($ file));
		$ real_directory = realpath (wp_normalize_path ($ directory));
	}

	if ( false !== $real_file ) {
		$ real_file = wp_normalize_path ($ real_file);
	}

	if ( false !== $real_directory ) {
		$ real_directory = wp_normalize_path ($ real_directory);
	}

	if ( false === $real_file || false === $real_directory || strpos( $real_file, trailingslashit( $real_directory ) ) !== 0 ) {
		return false;
	}

	wp_delete_file($file);

	return true;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *