web-dev-qa-db-ja.com

WordPressの投稿にアップロードできる画像/動画の数を制限する方法

私のサイトには、投稿をアップロードする作者となるユーザーがたくさんいるでしょう。今のところ、彼らは彼らが望むように投稿ごとにできるだけ多くの画像/ビデオをアップロードすることができます。私はそれらがポストごとに最大4つの画像/ビデオをアップロードするように制限したいです。誰かが私を手伝ってくれる?

3
aamir

これを試して:

add_filter('wp_handle_upload_prefilter', 'limit_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'];
    }
  }
  if ($post_id = (isset($_REQUEST['post_id']) ? $_REQUEST['post_id'] : false)) {
    if (count(get_posts("post_type=attachment&post_parent={$post_id}"))>3)
      $file['error'] = "Sorry, you cannot upload more than four (4) image.";
  }
  return $file;
}

あなたのテーマのfunctions.phpにこれを貼り付けた後、アップロード制限は投稿あたり合計4ファイルになるはずです。

9
Bainternet

私は解決策も持っていて、同じアイディアとフックを使っていますが、もっと複雑でもっと機能的でクラスで構成されているので簡単に再利用できます。顧客プロジェクトであり、現在は無料でした: https://github.com/bueltge/Limit-Upload

2
bueltge

このページの'posts_per_page' => -1クエリはデフォルトのページングのために最大5しか得られないため、このコードを5つ以上に制限したい場合は、このコードを使用したい人は必ずget_postsを含めてください。

https://stackoverflow.com/questions/2134500/why-does-get-posts-return-only-5-matching-posts-when-it-should-return-9 を参照してください。詳しくは。乾杯!

0
Brandon Johnson