Как ограничить пользователей в загрузке файлов разного типа

👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

Я уже писал, как показать пользователям, какие типы файлов можно загружать в блог – MIME-типы отображаются в отдельной вкладке. Но иногда требуется ограничить эти типы определенным набором. С помощью специального фильтра можно создать избранный список пользователей, которые могут загружать все типы файлов, а остальным же ограничить типы файлов определенными расширениями.

Для этого откройте файл functions.php вашей темы, и добавьте в него такой код:

add_filter('upload_mimes','restrict_mime');
function restrict_mime($mimes) {
    global $current_user;
    get_currentuserinfo();
    // change users in list
    $users = array(
                              "tiaurus",
                              "testuser",
                              "someuser",
                              "Garry"
                            );
    if (!in_array($current_user->user_login, $users)) {
	$mimes = array(
	                'jpg|jpeg|jpe' => 'image/jpeg',
	                'gif' => 'image/gif',
                    'png' => 'image/png' 
	);
	}
	return $mimes;
}

Если пользователь входит в перечисленный в коде список, то он имеет право загружать все типы файлов. Если же не входит – то только JPG, PNG и GIF. Неплохая добавка ко всем остальным установкам безопасности.

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Monk Albino

    Было бы неплохо ещё добавить png, как другой популярный формат картинок.

    Ответить
    1. Так добавьте

      	                'jpg|jpeg|jpe' => 'image/jpeg',
      	                'gif' => 'image/gif',
      	                'png' => 'image/png',
      
      Ответить
      1. Monk Albino

        Да я в статью имел в виду, а не сюда.

        Ответить
        1. Я тоже имел ввиду в статью.

          Ответить
  2. nail

    Спасибо очень полезный пост!))) Я бы еще добавил в массив mines 3 элемент

    'png' => 'image/png'

    и еще после последнего элемента массива запятая не ставиться, но это не критично php проглатывает такое.

    Ответить