I was about to give up thinking that it wasn’t possible or at least easy and then I stumbled onto the wp_handle_upload_prefilter
filter which gives you exactly what you asked for!
Here’s the code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | add_filter('wp_handle_upload_prefilter', 'yoursite_wp_handle_upload_prefilter'); function yoursite_wp_handle_upload_prefilter($file) { // This bit is for the flash uploader if ($file['type']=='application/octet-stream' && isset($file['tmp_name'])) { $file_size = getimagesize($file['tmp_name']); if (isset($file_size['error']) && $file_size['error']!=0) { $file['error'] = "Unexpected Error: {$file_size['error']}"; return $file; } else { $file['type'] = $file_size['mime']; } } list($category,$type) = explode('/',$file['type']); if ('image'!=$category || !in_array($type,array('jpg','jpeg','gif','png'))) { $file['error'] = "Sorry, you can only upload a .GIF, a .JPG, or a .PNG image file."; } else if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) { if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>0) $file['error'] = "Sorry, you cannot upload more than one (1) image."; } return $file; } |
If you like this question & answer and want to contribute, then write your question & answer and email to freewebmentor[@]gmail.com. Your question and answer will appear on FreeWebMentor.com and help other developers.