Как в wordpress разрешить mime type .MAX?

Ссылка скопирована
1 ответ

Добрый день. Как в WP разрешить загрузку файлов .max
Сделал так не помогает

add_filter( 'upload_mimes', 'upload_allow_types' ); function upload_allow_types( $mimes ) {  	$mimes['dwg']  = 'image/vnd.dwg'; 	$mimes['fbx']  = 'application/octet-stream'; 	$mimes['max']  = 'application/octet-stream'; 	$mimes['zip']  = 'application/zip';  	return $mimes; }

add_filter( 'upload_mimes', 'upload_allow_types' ); function upload_allow_types( $mimes ) { $mimes['dwg'] = 'image/vnd.dwg'; $mimes['fbx'] = 'application/octet-stream'; $mimes['max'] = 'application/octet-stream'; $mimes['zip'] = 'application/zip'; return $mimes; }

Дополнительно:

Пробовал дополнительно в wp-includes/functions.php промисать также в mime, не помогло

'max'                          => 'application/octet-stream',

'max' => 'application/octet-stream',

Ответы:

Не смог сам найти решение.
Удалось решить при помощи плагина

https://ru.wordpress.org/plugins/wp-add-mime-types/

https://ru.wordpress.org/plugins/wp-add-mime-types/

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Backend-редакция Ответ

Одного фильтра upload_mimes для новых версий WordPress часто недостаточно. WordPress проверяет не только расширение, но и результат определения типа файла через wp_check_filetype_and_ext(). Для редких форматов вроде .max сервер может вернуть пустой или неожиданный MIME, и загрузка будет заблокирована.

Добавьте разрешение MIME и дополнительную правку проверки типа файла. Код лучше положить в небольшой mu-plugin или в functions.php дочерней темы, но не в core-файлы WordPress.

add_filter('upload_mimes', function ($mimes) {
    $mimes['max'] = 'application/octet-stream';
    return $mimes;
});
 
add_filter('wp_check_filetype_and_ext', function ($data, $file, $filename, $mimes) {
    $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
 
    if ($ext !== 'max') {
        return $data;
    }
 
    return [
        'ext' => 'max',
        'type' => 'application/octet-stream',
        'proper_filename' => $data['proper_filename'] ?? false,
    ];
}, 10, 4);

add_filter('upload_mimes', function ($mimes) { $mimes['max'] = 'application/octet-stream'; return $mimes; }); add_filter('wp_check_filetype_and_ext', function ($data, $file, $filename, $mimes) { $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if ($ext !== 'max') { return $data; } return [ 'ext' => 'max', 'type' => 'application/octet-stream', 'proper_filename' => $data['proper_filename'] ?? false, ]; }, 10, 4);

Если файл загружается только администраторами, дополнительно можно разрешить неотфильтрованные загрузки для админов:

add_filter('user_has_cap', function ($caps, $cap, $args) {
    if (! empty($args[0]) && $args[0] === 'unfiltered_upload' && current_user_can('manage_options')) {
        $caps['unfiltered_upload'] = true;
    }
 
    return $caps;
}, 10, 3);

add_filter('user_has_cap', function ($caps, $cap, $args) { if (! empty($args[0]) && $args[0] === 'unfiltered_upload' && current_user_can('manage_options')) { $caps['unfiltered_upload'] = true; } return $caps; }, 10, 3);

Проверьте ещё три момента:

  • расширение файла должно быть именно .max, без двойного расширения вроде .max.zip;
  • размер файла не должен превышать лимиты upload_max_filesize и post_max_size;
  • не правьте wp-includes/functions.php, потому что обновление WordPress перезатрёт изменения.

Разрешение application/octet-stream широкое, поэтому не открывайте загрузку таких файлов всем пользователям. Для публичных форм загрузки лучше делать отдельную строгую проверку расширения, размера и роли пользователя.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно