Begrenzen Sie das Hochladen von Bildern auf einen und deaktivieren Sie das Hochladen von Audio-, Video- und anderen Dokumentdateitypen

20

Jemand kennt einen Trick in Neuen Beitrag hinzufügen zu:

  1. Deaktivieren Sie das Hochladen von Audio-, Video- und anderen Dateitypen.

  2. Akzeptiere nur das Hochladen eines Bildes (jpg, png, gif).

  3. Beschränken Sie den Upload jedes Posts auf nur ein Bild (nicht mehr als ein Bild).

Danke im Voraus.

José Pablo Orozco Marín
quelle
1
Sie können den Flash-Uploader auch so ändern, dass nur eine Datei zulässig ist . Dies funktioniert zusammen mit der Lösung, die Mike gab.
Jan Fabry

Antworten:

25

Ich wollte aufhören zu denken, dass es nicht möglich oder zumindest einfach ist und bin dann auf den wp_handle_upload_prefilterFilter gestoßen, der dir genau das gibt, wonach du gefragt hast! Hier ist der Code:

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

Und hier sind einige Screenshots, die zeigen, wie es in Aktion aussieht:

Screenshot des WordPress-Upload-Dialogs mit Code zum Deaktivieren mehrerer Uploads von anderen Dateien als Bilddateien

Screenshot des WordPress-Upload-Dialogs mit Code zum Deaktivieren mehrerer Bild-Uploads pro Beitrag

MikeSchinkel
quelle
Danke Mike. Scheint auf nicht-Flash-Upload-Prozess zu arbeiten, aber mit Flash-Version zeigt: ... Leider können Sie nur eine .GIF-, eine .JPG- oder eine .PNG-Bilddatei hochladen.
José Pablo Orozco Marín
@ José Pablo Orozco Marín - Vielen Dank, dass Sie meinen Fehler gefunden haben. Ich glaube, ich habe das Problem gefunden und eine neuere Version des Codes veröffentlicht, von der ich glaube, dass sie jetzt für den Flash-Uploader funktioniert. Gib mir Bescheid!
MikeSchinkel am
@ José Pablo Orozco Marín - Großartig. Froh, dass ich helfen konnte.
MikeSchinkel
Wo soll ich diese Zeile einfügen - und ist sie kompatibel zu WP 3.01 und höher?
1
Hey, Mike. Diese Antwort ist ziemlich alt. Gibt es einen besseren Ansatz für eine neue Version von WordPress?
Sisir