2016-06-25 11 views
0

Ich habe eine Website mit einem Frontend-Formular, wo Benutzer neue Post hinzufügen können. Das Formular enthält einige grundlegende Postdetails und ein vordefiniertes Bildfeld. Das Formular hat noch einige weitere Bildfelder, die von acf gesteuert werden.Wordpress Bild Upload von Frontend wirft 500 internen Server Fehler

Jetzt ist das Problem, wenn ich Bilder wie PNG alles gut funktioniert. Aber wenn ich Bilder wie JPG verwende, gibt es einen internen Serverfehler. In acf habe ich die akzeptierten Dateiformate als "jpg, png, jpeg" hinzugefügt. Aber ich bin nicht sicher, wie man Dateiformate für das vorgestellte Bild hinzufügt.

Hier ist der Code, den ich verwende. Hier wird immer das erste Bild das vorgestellte Bild sein.

 foreach($_FILES as $file) { 
      if(is_array($file)) { 
       if($count==1){ 
        $featured_image_id = upload_user_file($file); 
       }else{ 
        $item_image[] = upload_user_file($file); 

       } 
      } 
      $count++; 
      } 

Und hier ist die upload_user_file Funktion

function upload_user_file($file = array()) { 
    require_once(ABSPATH . 'wp-admin/includes/admin.php'); 
     $file_return = wp_handle_upload($file, array('test_form' => false)); 
     if(isset($file_return['error']) || isset($file_return['upload_error_handler'])) { 
      return false; 
     } else { 
      $filename = $file_return['file']; 
      $attachment = array(
       'post_mime_type' => $file_return['type'], 
       'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)), 
       'post_content' => '', 
       'post_status' => 'inherit', 
       'guid' => $file_return['url'] 
     ); 
      $attachment_id = wp_insert_attachment($attachment, $file_return['url']); 
      require_once(ABSPATH . 'wp-admin/includes/image.php'); 
      $attachment_data = wp_generate_attachment_metadata($attachment_id, $filename); 
      wp_update_attachment_metadata($attachment_id, $attachment_data); 
      if(0 < intval($attachment_id)) { 
      return $attachment_id; 
      } 
     } 
     return false; 
} 

Antwort

0

Ok ich es gelöst. Aus irgendeinem Grund funktionierten die erlaubten Dateitypen in acf nicht für mich. Also habe ich nur die Typen entfernt (dh alle Dateitypen zulassen) und alles ist wieder lebendig geworden. Ich weiß, dass dies möglicherweise nicht für jeden geeignet ist, aber ich denke, das weist Sie in die richtige Richtung, wo das Problem liegen könnte.

+0

Hey, kannst du das näher ausführen? Ich bin mir ziemlich sicher, dass ich genau das gleiche Problem habe wie du. – Jacksonkr

+0

Im Bildfeld gibt es eine Option namens "Dateitypen zulassen". In der Dokumentation heißt es: "Upload-Validierung für bestimmte Dateitypen hinzufügen. Geben Sie eine durch Kommas getrennte Liste ein, um anzugeben, welche Dateitypen zulässig sind oder für alle Dateitypen leer gelassen werden. Hinzugefügt in Version 5.1.9". Wenn Sie es also leer lassen, werden alle Dateitypen zugelassen. In einigen seltenen Fällen wird Wordpress htaccess nicht aktualisiert, also versuchen Sie es mit Einstellungen> Permalinks und klicken Sie auf Speichern. Dadurch wird Ihre htaccess-Datei aktualisiert. –

Verwandte Themen