web-dev-qa-db-fra.com

Comment limiter le nombre d'images/vidéos pouvant être téléchargées sur un article WordPress?

il y aura beaucoup d'utilisateurs sur mon site qui seront l'auteur qui téléchargera leurs messages. À l'heure actuelle, ils peuvent télécharger autant d'images/de vidéos par message qu'ils le souhaitent. Je veux les limiter à l'envoi de 4 images/vidéos maximum par publication. Est-ce que quelqu'un peut m'aider s'il vous plaît ?

3
aamir

essaye ça:

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

une fois que vous avez collé ceci dans le fichier functions.php de votre thème, la limite de téléchargement doit être de 4 fichiers au total par publication.

9
Bainternet

J'ai aussi sur la solution, utilise la même idée et les crochets, seulement plus complexe avec plus de fonctionnalités et structuré en classes pour une utilisation facile. Était un projet client et maintenant son libre: https://github.com/bueltge/Limit-Upload

2
bueltge

Quiconque souhaite utiliser ce code, veillez à inclure le 'posts_per_page' => -1 si vous souhaitez limiter le nombre à plus de 5, car la requête get_posts de cette page n'aura qu'un maximum de 5 en raison de la pagination par défaut.

voir https://stackoverflow.com/questions/2134500/why-does-get-posts-return-only-5-matching-posts-when-it-should-return-9 pour plus d'informations. À votre santé!

0
Brandon Johnson