Benutzerdefinierte Bildupload

Ich versuche, den Upload für Anhänge für mein benutzerdefiniertes Postformular einzurichten.

Zuerst füge ich meinem form Tag enctype="multipart/form-data"

Zu Testzwecken habe ich zwei Upload-Formulare, aber in Zukunft werde ich nur ein Formular implementieren und jQuery verwenden, um so viele Formulare wie möglich anzuhängen.

  

In PHP verwende ich:

  if ($_FILES) { foreach ($_FILES as $file => $array) { $newupload = insert_attachment($file,$post_id); // $newupload returns the attachment id of the file that // was just uploaded. Do whatever you want with that now. } } 

und in functions.php habe ich functionen, die mit dieser Form umgehen sollen.

 function insert_attachment($file_handler,$post_id,$setthumb='false') { // check to make sure its a successful upload if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false(); require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id = media_handle_upload( $file_handler, $post_id ); if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id); return $attach_id; } 

Alles funktioniert perfekt, wenn ich nur zwei Bilder hochlade, aber wenn ich nur ein ODER hochladen möchte, bekomme ich Fehler mein post_meta db:

 O:8:"WP_Error":2:{s:6:"errors";a:1:{s:12:"upload_error";a:1:{i:0;s:21:"No file was uploaded.";}}s:10:"error_data";a:0:{}} 

Ich habe versucht, einzufügen: if ($ _FILES [$ file_handler] [‘error’] === 4) __return_false (); in functions.php aber es funktioniert nicht, wie kann ich meinem Skript sagen, dass meine Form leer ist?

Credits: nahm dieses Formular von hier

Solutions Collecting From Web of "Benutzerdefinierte Bildupload"

Möglicherweise kehren Sie nicht korrekt aus der function zurück.

 function insert_attachment($file_handler, $post_id, $setthumb=false) { // check to make sure its a successful upload // changes start if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) { return __return_false(); } // changes end require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id = media_handle_upload( $file_handler, $post_id ); if ($setthumb) update_post_meta($post_id, '_thumbnail_id', $attach_id); return $attach_id; } 

Aus meiner Sicht ist es besser, einfach die vorhandene native function von WordPress- Featurebildern zu verwenden , mit der Sie Bilder in Ihren benutzerdefinierten Posttyp hochladen können.

Sie können während der Registrierung Ihres benutzerdefinierten Beitrags die Option aktivieren

 'supports' => array('thumbnail') 

wie viele andere nützliche native functionen