WordPress как на ладони

Загрузка ttf файлов в WordPress

Версия wordpress 5.6.2, при попытки расширить арсенал загружаемых форматов wp ругается что файл запрещен.

Хотя при проверке массива разрешенных форматов запись есть.

Что изменилось и почему не получается загрузить подскажите?

[ttf] => application/octet-stream
add_filter('upload_mimes', 'add_ttf_type');

	function add_ttf_type($mime_types){
		$mime_types['ttf'] = 'application/octet-stream';
		return $mime_types;
	}

Но файл .ttf загрузить не дает.

Мое решение

И через пару часов я добавляю ответ.

$mime_types['ttf'] = 'application/octet-stream';

меняем на

$mime_types['ttf'] = 'application/x-font-ttf';

В ранних версиях в место application/x-font-ttf я писал TryeTypeFont и все работало.

0
Антон
3 года назад
  • 1
    Kama9616

    В PHP при проверке МИМЕ тип файла .ttf получается font/sfnt. Поэтому тебе нужно указать именно его:

    add_filter( 'upload_mimes', 'upload_allow_types' );
    function upload_allow_types( $mimes ) {
    
    	$mimes['ttf'] = 'font/sfnt';
    
    	return $mimes;
    }

    Однако не уверен что такой тип будет подходить для всех .ttf файлов (к файлу который я загружал подошел). Поэтому чтобы обрабатывались все виды .ttf файлов нужен будет еще один дополнительный.

    # Исправление MIME типа
    add_filter( 'wp_check_filetype_and_ext', 'check_filetype_fix_mime_type', 10, 5 );
    function check_filetype_fix_mime_type( $data, $file, $filename, $mimes, $real_mime = '' ){
    
    	// поправим mime тип ttf файлов
    	if( '.ttf' === strtolower( substr($filename, -4) ) ){
    
    		$data['ext']  = 'ttf';
    		$data['type'] = 'font/sfnt';
    	}
    
    	return $data;
    }
    Антон 3 года назад

    Я не знал как ответить самому себе, поэтому дополнил вопрос в конце ответом)
    Спасибо за помощь)

    Kama 3 года назад

    Твой вариант подойдет не для всех ttf файлов... Я об этом написал уже.

    Антон 3 года назад

    Да я понял, просто на данный момент мне этого за глаза)

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация