将图像上传限制为一个,并禁用要上传的音频、视频和其他文档文件类型

时间:2011-01-30 作者:José Pablo Orozco Marín

有人知道在以下内容中添加新帖子的技巧:

禁用音频、视频和其他文件类型的上载。

仅接受图像(jpg、png、gif)的上载。

将每篇文章的上载限制为仅上载一幅图像(不超过一幅)。

提前谢谢。

1 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

我正要放弃认为这是不可能的或至少是很容易的想法,然后我偶然发现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;
}
下面是一些屏幕截图,展示了它的实际效果:

Screenshot of WordPress Upload Dialog with code to disable multiple uploads of anything besides image files

Screenshot of WordPress Upload Dialog with code to disable multiple image uploads per post

结束

相关推荐

404从wp-Content/Uploads/获取图像时

我在获取图像时获得404状态,http仍然包含该图像。图像显示在浏览器中,但404代码中断了一些应用程序。对wp内容/上载/的调用被重定向到。htaccess:<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\\.php$ - [L] RewriteRule (.*) /index.php?getfile=$1 [L] </IfModule>&