wp_check_filetype_and_ext хук-фільтрWP 3.0.0

Дозволяє перевірити файл, що завантажується, і змінити його реальний тип (MIME тип).

При завантаженні файлу WP перевіряє реальний тип файлу (не те, що зазначено в розширенні імені файлу). Це робиться функцією wp_check_filetype_and_ext() . Цей фільтр дозволяє змінити результат роботи цієї функції.

Коли може стати в нагоді хук?

Коли, наприклад, потрібно за ролями (чи іншими умовами) дозволяти чи забороняти завантаження файлів різних розмірів, типів, розширень, назв тощо.

Наприклад:

Ми хочемо дозволити завантаження файлів SVG. І додали mime тип SVG файлу в дозволені мімі типи:

add_filter( 'upload_mimes', function ( $ mimes ) {
	$mimes['svg'] = 'image/svg+xml';
	return $mimes;
} );

Пробуємо завантажити svg файл і бачимо помилку:

Так відбувається, тому що після перевірки функцією wp_check_filetype_and_ext() , реальний міме тип SVG файлу визначиться як 'text/plain'і функція поверне порожні дані типу файлу (перевірка типу файлу не пройдено).

Щоб виправити це, ми можемо через цей фільтр вказати свої дані. Однак будьте обережні, неправильний код відкриє можливість завантажувати будь-які файли будь-яким користувачам! Робочий приклад розв’язання такого завдання дивіться нижче, у прикладах.

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

add_filter( 'wp_check_filetype_and_ext', 'wp_kama_check_filetype_and_ext_filter', 10, 5);

/**
 * Function for `wp_check_filetype_and_ext` filter-hook.
 *
 * @param array $wp_check_filetype_and_ext Values ​​for the extension, mime type, and correctod filename.
 * @param string $file Докладніше про файл.
 * @param string $filename Name of the file (можна differ from $file due to $file being in a tmp directory).
 * @param string[] $mimes Array of mime types keyed by their file extension regex.
 * @param string|false $real_mime Actual mime type або false if the type cannot be determined.
 *
 * @return array
 */
function wp_kama_check_filetype_and_ext_filter( $wp_check_filetype_and_ext, $file, $filename, $mimes, $real_mime ){

	// Filter...
	return $wp_check_filetype_and_ext;
}
$data
(масив)

Дані файлу у вигляді масиву з ключами:

  • ext– Розширення, наприклад txt (file.txt)
  • type– міме тип, наприклад text/plain
  • proper_filename– правильне ім’я файлу.
    • Якщо вказано, замінить елемент масиву ‘name’ даних для завантаження: ім’я з $_FILES[‘name’] .
    • Якщо не вказано, ім’я використовуватиметься оригінальне.
$file
(рядок)
Шлях до файлу. Наприклад:
userdatatempphpF581.tmp
$filename
(рядок)
Назва файлу, наприклад
wp-amp-plugin_043848.svg.
$mimes
(масив/false)
Масив назв дозволених розширень та типів файлів. Якщо false, це означає що будуть взяті значення функції
get_allowed_mime_types() .
$real_mime
(рядок/true/false)
Реальний мімі тип або false, коли не вдалося отримати мімі тип.

Приклади

0

#1 Демонстрація значень, що передаються у фільтр

add_filter( 'wp_check_filetype_and_ext', 'filter_function_name_497', 10, 4);
function filter_function_name_497( $wp_check_filetype_and_ext, $file, $filename, $mimes ){

	/*
	$wp_check_filetype_and_ext

	// коли файл не пройшов перевірку
	array(
		[ext] =>
		[type] =>
		[proper_filename] =>
	)

	// для файлу .txt
	array(
		[ext] => txt
		[type] => text/plain
		[proper_filename] =>
	)

	$file = C:OpenServeruserdatatempphpF581.tmp
	$filename = wp-plugin_043848.svg
	$mimes = false // Список за замовчуванням
	*/

	return $wp_check_filetype_and_ext;
}
0

#2 Дозволимо завантажувати SVG файл у WordPress

Приклад винесено в окрему статтю .

список змін

З версії 3.0.0Введено.
З версії 5.1.0The $real_mime parameter був added.

Де викликається хук

wp-includes/functions.php 3243

return apply_filters( 'wp_check_filetype_and_ext', compact( 'ext', 'type', 'proper_filename' ), $file, $filename, $mimes, $real_mime );

Де використовується хук у WordPress

Використання не знайдено.

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

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