web-dev-qa-db-ja.com

画像のアップロードを1つに制限し、アップロードするオーディオ、ビデオ、その他のドキュメントファイルの種類を無効にする

誰かが新しい記事を追加にいくつかのトリックを知っている:

  1. オーディオ、ビデオ、その他のファイル形式のアップロードを無効にします。

  2. 画像(jpg、png、gif)のアップロードのみを受け入れます。

  3. 各投稿のアップロードを1つの画像のみに制限します(1つ以下)。

前もって感謝します。

私はそれが不可能であるか、少なくとも簡単ではないと考えて諦めようとしていました。それから私は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 

25
MikeSchinkel