wp_check_filetype()WP 2.0.4

Получает расширение и MIME тип файла по переданному имени (пути) файла. Используется для проверки разрешен ли указанный тип файла к загрузке на сайт.

Во втором параметре можно указать разрешенные типы файлов. По умолчанию они получаются функцией get_allowed_mime_types().

1 раз — 0.0011148 сек (очень медленно) | 50000 раз — 1.85 сек (быстро) | PHP 7.3.12, WP 5.4.1

Хуков нет.

Возвращает

Массив. Данные о типе файла:

array(
	'ext' => 'png',        // расширение (пр. 'jpg')
	'type' => 'image/png', // mime тип (пр 'image/jpeg')
)

Если тип файла не разрешен, то каждый элемент массива будет содержать false.

Использование

wp_check_filetype( $filename, $mimes )
$filename(строка) (обязательный)
Абсолютный путь к файлу: www/example.com/wp-content/uploads/file.png
$mimes(массив)
Массив названий разрешенных расширений и типов файлов. По умолчанию значения функции get_allowed_mime_types().
По умолчанию: null

Примеры

0

#1 Демонстрация работы функции

$filetype = wp_check_filetype( dirname(__FILE__) . '/image.jpg' );

echo $filetype['ext'];  // выведет: jpg
echo $filetype['type']; // выведет: image/jpeg
0

#2 Проверим разрешен ли файл на сайте

Для проверки получим данные файла:

$filetype = wp_check_filetype('image.jpg');
if( $filetype['ext'] )
	echo 'Файл с расширением '. $filetype['ext'] .' разрешен';
else
	echo 'Файл с расширением '. $filetype['ext'] .' запрещен';
0

#3 Указание разрешенных типов файлов и проверка

Укажем разрешенные типы файлов в массиве и проверим файл:

$mimes = array(
	'gif'   =>  'image/gif',
	'png'   =>  'image/png',
	'jpg|jpeg|jpe' => 'image/jpeg'
);
$file = 'image.bmp';

$filetype = wp_check_filetype( $file, $mimes );
if( $filetype['ext'] )
	echo 'разрешен';
else
	echo 'запрещен';

Список изменений

С версии 2.0.4 Введена.

Код wp_check_filetype() WP 6.1.1

function wp_check_filetype( $filename, $mimes = null ) {
	if ( empty( $mimes ) ) {
		$mimes = get_allowed_mime_types();
	}
	$type = false;
	$ext  = false;

	foreach ( $mimes as $ext_preg => $mime_match ) {
		$ext_preg = '!\.(' . $ext_preg . ')$!i';
		if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
			$type = $mime_match;
			$ext  = $ext_matches[1];
			break;
		}
	}

	return compact( 'ext', 'type' );
}