Ich versuche, programmgesteuert mehrere Bilder zur Medienbibliothek hinzuzufügen. Ich habe die Bilder hochgeladen und wp-content/uploads
versuche sie jetzt zu verwenden wp_insert_attachement
.
Hier ist der Code, der jedoch nicht wie erwartet funktioniert. Ich denke, Metadaten werden nicht ordnungsgemäß generiert. Ich kann die Dateien in der Medienbibliothek anzeigen, aber ohne Miniaturansicht. Auch wenn ich das Bild bearbeite, wird eine Fehlermeldung angezeigt, dass das Bild erneut hochgeladen werden soll .
$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 );
}
images
attachments
media-library
Adrian
quelle
quelle
wp_insert_attachment
der Dateipfad sein sollte (also$file
in diesem Beispiel), nicht der Dateiname. Ich habe die Antwort bearbeitet und auf die Genehmigung gewartet.Ich hatte Probleme mit der @ TrubinE-Lösung, bei der Bilddateien nicht geladen wurden.
Hier ist ein vollständiges Beispiel, das für mich funktioniert hat: https://gist.github.com/m1r0/f22d5237ee93bcccb0d9
Dies ist eine ähnliche Idee, aber verwenden Sie die WP-HTTP-Bibliothek, um den Inhalt im Vergleich zu file_get_contents () abzurufen. Hier ist der Inhalt der Github-Kernlösung von m1r0:
quelle