Hochladen mehrerer Anhänge vom Front-End mit einer Beschreibung

Ich arbeite an einer WordPress-Site, die ein benutzerdefiniertes Frontend-Formular zum Hinzufügen eines Posts mit dem Inhaltstyp “sketchpad” enthält. Das Formular enthält einen Abschnitt, in dem Sie mehrere Bilder mit einem Beschreibungsfeld hochladen können, das als Alt-Tag verwendet wird. Was ist eine einfache Möglichkeit für mich, mehrere Anhänge mit zugehörigen Beschreibungen aus dem Front-End hochzuladen?

Der Code, der derzeit die hochgeladenen Dateien abfängt, ist hier:

// Make sure a user can edit posts (contributor level) if (current_user_can('edit_posts')) { global $post; // If we have files if ( $_FILES ) { // Get the upload attachment files $files = $_FILES['upload_attachment']; foreach ($files['name'] as $key => $value) { if ($files['name'][$key]) { $file = array( 'name' => $files['name'][$key], 'type' => $files['type'][$key], 'tmp_name' => $files['tmp_name'][$key], 'error' => $files['error'][$key], 'size' => $files['size'][$key] ); $_FILES = array("upload_attachment" => $file); foreach ($_FILES as $file => $array) { $newupload = insert_attachment($file,$post->ID); } } } } } 

Dies ist die function “Anhang einfügen”, die die hochgeladenen Dateien tatsächlich verarbeitet und sie einfügt:

 function insert_attachment($file_handler, $post_id) { // 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 ); return $attach_id; } 

Solutions Collecting From Web of "Hochladen mehrerer Anhänge vom Front-End mit einer Beschreibung"

Ich habe das schließlich herausgefunden. Nach vielen Überlegungen dämmerte es mir, dass Anhänge nur Posts sind, die dem post_type von ‘attachment’ zugewiesen wurden, und so entdeckte ich bald, dass Anhänge ein post_content-Feld sowie ein post_title-Feld enthielten. Für meine Bedürfnisse brauchte ich nur das Attribut post_title, da meine Beschreibungen klein sind. Der folgende Code ist, was bei mir funktioniert hat.

Der Wert $ upload_id ist lediglich die Anhangs-ID, die von meiner function insert_attachment zurückgegeben wurde.

 // Make sure we have an attachment ID if ($upload_id != 0) { // Insert the upload description aka post title $post_data = array(); $post_data['ID'] = $upload_id; $post_data['post_title'] = $file_title; wp_update_post($post_data); }