Programmgesteuertes Hinzufügen von Bildern zur Medienbibliothek

Ich versuche programmatisch mehrere Bilder zur Medienbibliothek hinzuzufügen, ich habe die Bilder auf wp-content/uploads wp_insert_attachement hochgeladen, jetzt versuche ich wp_insert_attachement zu verwenden.

Hier ist der Code, aber es funktioniert nicht wie erwartet, ich denke, Metadaten werden nicht richtig generiert, ich kann die Dateien in der Medienbibliothek sehen, aber ohne ein Vorschaubild, auch wenn ich das Bild bearbeite, bekomme ich eine Fehlermeldung, das Bild erneut zu laden .

 $filename_array = array( 'article1.jpg', 'article2.jpg', ); // The ID of the post this attachment is for. $parent_post_id = 0; // Get the path to the upload directory. $wp_upload_dir = wp_upload_dir(); foreach ($filename_array as $filename) { // Check the type of file. We'll use this as the 'post_mime_type'. $filetype = wp_check_filetype( basename( $filename ), null ); // Prepare an array of post data for the attachment. $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ), 'post_mime_type' => $filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); // Insert the attachment. $attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id ); // Make sure that this file is included, as wp_generate_attachment_metadata() depends on it. require_once( ABSPATH . 'wp-admin/includes/image.php' ); // Generate the metadata for the attachment, and update the database record. $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data ); } 

Solutions Collecting From Web of "Programmgesteuertes Hinzufügen von Bildern zur Medienbibliothek"

 $image_url ='adress img'; $upload_dir = wp_upload_dir(); $image_data = file_get_contents($image_url); $filename = basename($image_url); if (wp_mkdir_p($upload_dir['path'])) $file = $upload_dir['path'] . '/' . $filename; else $file = $upload_dir['basedir'] . '/' . $filename; file_put_contents($file, $image_data); $wp_filetype = wp_check_filetype($filename, null); $attachment = array( 'post_mime_type' => $wp_filetype['type'], 'post_title' => sanitize_file_name($filename), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $filename ); require_once(ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata($attach_id, $file); wp_update_attachment_metadata($attach_id, $attach_data); 

muss $ attach_id = wp_insert_attachment ($ attachment, $ file) sein;