Вопрос или проблема
У меня проблема с загрузкой формата .ppsx в медиатеку. Все форматы PowerPoint (pptx ppt, pps) можно загружать без проблем, кроме формата .ppsx, и я не знаю, почему.
Когда я пытаюсь загрузить этот формат, появляется сообщение:
Извините, этот тип файла недопустим по соображениям безопасности.
Хотя WordPress по умолчанию (wp_get_mime_types()) позволяет использовать .ppsx, я попробовал следующие методы, но методы 1 и 2 не работают, а метод 3 небезопасен и не работает для неадминистраторов.
Первый метод:
Добавьте тип файла через functions.php моей темы (тип MIME Microsoft подтвержден здесь):
function allow_file_types($mime_types){
$mime_types['ppsx'] = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow';
return $mime_types;
}
add_filter('upload_mimes', 'allow_file_types', 1, 1);
Второй метод:
Установите плагины, которые делают то же самое, что и мой метод functions.php.
WP Extra File Types
WP Add Mime Types
Третий метод:
Добавьте эту строку кода в wp-config.php
define(‘ALLOW_UNFILTERED_UPLOADS’, true)
этот метод для меня небезопасен, и только администратор может загружать файлы .ppsx)
метод, который частично работает (метод 4)
Единственный метод, который частично работает, – это добавить код ниже:
function my_check_filetype_and_ext( $info, $file, $filename, $mimes, $real_mime )
{
if ( empty( $check['ext'] ) && empty( $check['type'] ) )
{
$secondaryMimetypes = ['ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation'];
// Run another check, but only for our secondary mime and not on core mime types.
remove_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 );
$info = wp_check_filetype_and_ext( $file, $filename, $secondaryMimetypes );
add_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 );
}
return $info;
}
add_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 );
Проблема в том, что если мы добавим этот код в functions.php, мы сможем загружать файлы .ppsx, но все остальные форматы не смогут быть загружены в медиатеку.
Заранее спасибо за вашу помощь.
В дополнение к сообщенной ошибке, вы можете попробовать следующее в вашем файле wp-config.php
:
define( 'ALLOW_UNFILTERED_UPLOADS', true );
Если вы предпочитаете не редактировать файл wp-config.php
и/или хотите больше контроля над тем, какие именно типы файлов можно загружать на ваш сайт, вы можете использовать бесплатный плагин WP Extra File Types на WordPress.org.
Ответ или решение
Конечно, давайте рассмотрим проблему загрузки файлов формата .ppsx в медиабиблиотеку WordPress и способы ее решения.
Проблема
Вы столкнулись с ошибкой при загрузке файлов формата .ppsx в медиабиблиотеку WordPress, получая сообщение "Извините, этот тип файла не разрешен по соображениям безопасности". В то время как форматы .pptx, .ppt и .pps загружаются без проблем. Хотя функция wp_get_mime_types()
в WordPress по умолчанию поддерживает .ppsx.
Анализ и Решение
С точки зрения безопасности, WordPress по умолчанию ограничивает загрузку некоторых типов файлов. Это связано с тем, что загрузка неподдерживаемых файлов может представлять риск. Однако можно обойти это ограничение, добавив собственный MIME-тип для .ppsx.
Возможные Результаты
-
Функция в functions.php:
Вы уже добавили MIME-тип в файлfunctions.php
вашей темы:function allow_file_types($mime_types){ $mime_types['ppsx'] = 'application/vnd.openxmlformats-officedocument.presentationml.slideshow'; return $mime_types; } add_filter('upload_mimes', 'allow_file_types', 1, 1);
Этот метод должен работать, но если он не срабатывает, возможная причина может быть связана с кэшированием или конфликтом с плагинами либо с темой.
-
Плагины для MIME-типа:
Установка плагинов WP Extra File Types или WP Add Mime Types не решила проблему. Это возможно из-за того, что какой-либо конфликт с другими активными плагинами остается неразрешенным. -
Фильтр в wp-config.php:
Установитьdefine('ALLOW_UNFILTERED_UPLOADS', true)
в файлеwp-config.php
— метод, который открывает доступ к загрузке любых типов файлов, но лучше избегать подобного в качестве основной меры из-за рисков безопасности. -
Интеграция функции проверки файла и расширения:
Вы добавили функцию для проверки файлов, которая только частично сработала:function my_check_filetype_and_ext( $info, $file, $filename, $mimes, $real_mime ) { if ( empty( $check['ext'] ) && empty( $check['type'] ) ) { $secondaryMimetypes = ['ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation']; remove_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 ); $info = wp_check_filetype_and_ext( $file, $filename, $secondaryMimetypes ); add_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 ); } return $info; } add_filter( 'wp_check_filetype_and_ext', 'my_check_filetype_and_ext', 99, 5 );
Если данная функция ограничивает загрузку других типов файлов, возможно, это связано с конфликтами, которые стоит устранить.
Рекомендации
-
Очистка Кэша: После внедрения решений очистите кэш браузера, WordPress и серверный (при наличии). Это поможет гарантировать, что изменения начнут действовать.
-
Проверка Конфликтов Плагинов: Деактивируйте все плагины, кроме необходимых, и проверьте, решается ли проблема. Далее активируйте плагины по одному, чтобы выявить конфликтующий.
-
Диагностика Темы: Проверьте на дефолтной теме (например, Twenty Twenty-One), чтобы исключить влияние текущей темы.
Эти шаги помогут вам устранить препятствия при загрузке .ppsx в медиабиблиотеку WordPress с минимальными рисками для безопасности вашего сайта.