I believe you can add a filter to ` upload_mimes` to restrict to certain types. The hook: [http://adambrown.info/p/wp_hooks/hook/upload_mimes][1] The filter: add_filter('upload_mimes','restict_mime'); function restict_mime($mimes) { $mimes = array( 'jpg|jpeg|jpe' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png', ); return $mimes; } From what I understand this will not work for admins or any user with the `unfiltered_upload` capability. Also have a look at this post https://wordpress.stackexchange.com/questions/8107/limit-image-upload-to-one-and-disable-audio-video-and-other-document-file-types An alternative to control size limit would be to use .htaccess or php.ini: For upload limit you can set in .htaccess one of the following; LimitRequestBody 1073741824 //( 1MB) php_value upload_max_filesize 1M php_value post_max_size 1M For php.ini you can set `upload_max_filesize = 1M` [1]: http://adambrown.info/p/wp_hooks/hook/upload_mimes