Как запретить загрузку файлов для всех кроме админа?
Ссылка скопирована
Доброе утро.
Подскажите, надо чтобы пользователи (все кроме администратора) могли загружать только gif-файлы, а администратора это ограничение не касалось.
Что надо добавить в код?
add_filter('upload_mimes','restrict_mime'); function restrict_mime($mimes) { $mimes = array( 'gif' => 'image/gif', ); return $mimes; } |
add_filter('upload_mimes','restrict_mime'); function restrict_mime($mimes) { $mimes = array( 'gif' => 'image/gif', ); return $mimes; }
Дополнительно:
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
linkedin
Из-за чего выкидывает из аккаунта LinkedIn?
0 ответов
code-review
Нужен ли код-ревью React/TypeScript проекта?
0 ответов
Telegram
Как добиться, чтобы Telegram прислал мне именно смс код, а не через звонок его диктовал?
0 ответов
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
0 ответов

В вашем коде ограничение применяется ко всем пользователям, потому что фильтр
upload_mimesвсегда возвращает только GIF. Нужно добавить проверку роли/права и не ограничивать администраторов.add_filter( 'upload_mimes', 'site_restrict_mimes_for_non_admins' ); function site_restrict_mimes_for_non_admins( $mimes ) { if ( current_user_can( 'manage_options' ) ) { return $mimes; } return [ 'gif' => 'image/gif', ]; }
manage_optionsобычно есть только у администраторов. Если нужно разрешить загрузку ещё редакторам или менеджерам магазина, проверяйте другую capability или список ролей.Более строгий вариант — дополнительно проверить реальный MIME файла через
wp_check_filetype_and_ext. Это полезно, потому что одно расширение.gifне гарантирует, что файл безопасный:add_filter( 'wp_check_filetype_and_ext', function ( $data, $file, $filename, $mimes ) { if ( current_user_can( 'manage_options' ) ) { return $data; } $ext = strtolower( pathinfo( $filename, PATHINFO_EXTENSION ) ); if ( 'gif' !== $ext ) { return [ 'ext' => false, 'type' => false, 'proper_filename' => false, ]; } return $data; }, 10, 4 );
Если задача звучит именно «запретить загрузку файлов для всех кроме админа», а не «разрешить только gif», тогда проще забрать право
upload_filesу нужных ролей. Но для точечного ограничения форматов фильтрupload_mimesподходит лучше.Код добавляйте в дочернюю тему или мини-плагин. В core WordPress такие ограничения не правят.