Хук upload_mimes
в WordPress позволяет разработчикам настраивать список разрешенных для загрузки типов файлов (MIME-типы). С его помощью можно добавлять новые типы файлов, а также удалять ненужные или потенциально опасные форматы. Это полезно, например, если вам нужно разрешить загрузку специфичных файлов (например, SVG или JSON) или ограничить доступ к определенным типам.
Этот хук передает массив $t
, содержащий MIME-типы, где ключом является регулярное выражение для расширения файла, а значением — MIME-тип. Кроме того, передается параметр $user
, который представляет ID, объект пользователя, или null
, если он не определен.
apply_filters( 'upload_mimes', array $t, int|WP_User|null $user )
- $t (array) — Массив MIME-типов, где ключ — это расширение файла, а значение — MIME-тип.
- $user (int|WP_User|null) — Идентификатор пользователя, объект пользователя, или
null
.
Пример 1. Разрешение загрузки SVG файлов
SVG файлы по умолчанию запрещены к загрузке в WordPress по соображениям безопасности. Если вам нужно разрешить загрузку SVG, можно добавить его MIME-тип через фильтр:
add_filter( 'upload_mimes', 'allow_svg_uploads' );
function allow_svg_uploads( $mimes ) {
$mimes['svg'] = 'image/svg+xml'; // Добавляем поддержку SVG
return $mimes;
}
Теперь пользователи смогут загружать SVG файлы, что полезно для веб-дизайна и улучшения интерфейса сайта.
Пример 2. Ограничение загрузки типов файлов для обычных пользователей
Иногда необходимо ограничить загрузку определенных типов файлов только для администраторов. Следующий пример разрешает загрузку JSON-файлов только для администраторов:
add_filter( 'upload_mimes', 'restrict_json_to_admins', 10, 2 );
function restrict_json_to_admins( $mimes, $user ) {
if ( user_can( $user, 'administrator' ) ) {
$mimes['json'] = 'application/json'; // JSON для админов
}
return $mimes;
}
Этот код проверяет, является ли текущий пользователь администратором. Если да, он добавляет поддержку JSON, иначе доступ к загрузке JSON-файлов ограничивается.
Пример 3. Разрешение загрузки файлов шрифтов (WOFF, TTF)
Иногда требуется загружать кастомные шрифты для кастомизации сайта. Добавим MIME-типы для шрифтов WOFF и TTF:
add_filter( 'upload_mimes', 'add_custom_font_types' );
function add_custom_font_types( $mimes ) {
$mimes['woff'] = 'font/woff';
$mimes['ttf'] = 'font/ttf';
return $mimes;
}
Этот код позволит загружать файлы шрифтов форматов WOFF и TTF в библиотеку медиа WordPress.
Пример 4. Удаление нежелательных MIME-типов
Если необходимо удалить определенные типы файлов, например .exe
или .bat
, чтобы предотвратить потенциальные угрозы безопасности, можно воспользоваться unset()
:
add_filter( 'upload_mimes', 'remove_dangerous_file_types' );
function remove_dangerous_file_types( $mimes ) {
unset( $mimes['exe'] ); // Удаляем .exe
unset( $mimes['bat'] ); // Удаляем .bat
return $mimes;
}
После применения этого фильтра файлы с расширениями .exe
и .bat
не смогут быть загружены.
Пример 5. Добавление поддержки файлов WebP
Формат WebP позволяет загружать изображения с меньшим размером файла и сохранением качества. Этот формат полезен для оптимизации изображений на сайте:
add_filter( 'upload_mimes', 'allow_webp_uploads' );
function allow_webp_uploads( $mimes ) {
$mimes['webp'] = 'image/webp'; // Добавляем поддержку WebP
return $mimes;
}
Теперь вы можете загружать изображения в формате WebP, улучшая производительность сайта.
Заключение
Фильтр upload_mimes
— мощный инструмент для настройки типов файлов, доступных к загрузке. С его помощью вы можете адаптировать возможности WordPress под свои нужды, добавляя или убирая поддержку специфичных форматов. Будьте осторожны при добавлении новых типов, чтобы не допустить угроз безопасности.