将图片上传限制为一种,并禁止上传音频,视频和其他文档文件类型


Answers:


25

我将要放弃这是不可能的,或者至少是不容易的,然后我偶然发现了wp_handle_upload_prefilter过滤器,该过滤器为您提供了您所要的!这是代码:

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;
}

以下是一些截图,显示了它的实际效果:

WordPress上传对话框的屏幕快照,其中包含禁用除图片文件之外的任何内容的代码的代码

WordPress上传对话框的屏幕快照,其中包含用于禁用每个帖子多个图片上传的代码


谢谢迈克。似乎可以在非Flash上​​传过程中使用,但是使用Flash版本显示:...很抱歉,您只能上传.GIF,.JPG或.PNG图片文件。
何塞·巴勃罗·奥罗斯科马林

@JoséPablo OrozcoMarín-感谢您发现我的错误。我认为我已经找到了问题,并发布了我认为确实适用于Flash上​​传器的新版本代码。让我知道!
MikeSchinkel

@JoséPablo OrozcoMarín-太好了。很高兴我能帮上忙。
MikeSchinkel '02

我应该在哪里添加这行-它与tu wp 3.01和后者兼容吗?

1
嘿,迈克。这个答案很老了。是否有更好的方法考虑新版本的wordpress?
西西尔(Sisir)2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.