WordPress: So fügst du Bilder mit PHP in die Mediathek ein
Marc Wagner
Oktober 22, 2022
WordPress bietet verschiedene Möglichkeiten an, Bilder mit PHP zur WordPress Mediathek hinzuzufügen. Zwei Varianten möchte ich euch heute vorstellen, media_handle_sideload und wp_insert_attachment.
wp_insert_attachment #
Das folgende Beispiel zeigt dir, wie du mit PHP und wp_insert_attachment Bilder in die WordPress Mediathek einfügen kannst.
/**
* Hinzufügen von einem Bild zur WordPress Mediathek und anlegen aller dazugehörigen Bildgrößen
*
* @param string $path_to_file Der absolute Pfad zum Bild, welches zur Mediathek hinzugefügt werden soll, z.B.: /wp-content/uploads/bild1.jpg
* @param string $post_title Der Titel für das Bild
* @param int &$attachment_id Wenn angegeben, wird die ID des Bildes nach dem erfolgreichen anlegen in dieser Variable gespeichert.
*
* @return bool Gibt true zurück, wenn das Bild erfolgreich angelegt wurde. Andernfalls wird false zurückgegeben.
*/
function addImageToWordPressMediaLibrary(string $path_to_file, string $post_title, &$attachment_id = null): bool{
/**
* Mime Type der Datei von WordPress bestimmen lassen
*/
$filetype = wp_check_filetype(basename($path_to_file));
$attachment = array(
'post_mime_type' => $filetype['type'],
'post_title' => sanitize_title($post_title),
'post_content' => '',
'post_status' => 'inherit'
);
/**
* Post erstellen lassen
*/
$attachment_id = wp_insert_attachment($attachment, $path_to_file);
if(!is_numeric($attachment_id)){
return false;
}
/**
* Zusätzliche Bildgrößen anlegen lassen und für das Bild hinterlegen
*/
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attachment_id, $path_to_file );
wp_update_attachment_metadata( $attachment_id, $attach_data );
return true;
}
Über wp_insert_attachment wird das eigentliche Bild zur Mediathek hinzugefügt. Erst wenn dies erfolgreich war, werden über wp_generate_attachment_metadata die restlichen Bildformate erzeugt und anschließend über wp_update_attachment_metadata zum Bild (Post) hinzugefügt.
media_handle_sideload #
Alternativ lassen sich Bilder auch mit media_handle_sideload zur WordPress Mediathek hinzufügen. Diese Variante wird auch von der Mediathek im Backend deiner WordPress Webseite verwendet. Hier stehen dir weniger Einstellungsmöglichkeiten zur Verfügung, jedoch kannst du dir ein paar Zeilen Code sparen.
/**
* Hinzufügen von einem Bild zur WordPress Mediathek und anlegen aller dazugehörigen Bildgrößen
*
* @param string $path_to_file Der absolute Pfad zum Bild, welches zur Mediathek hinzugefügt werden soll, z.B.: /wp-content/uploads/bild1.jpg
* @param string $image Der Name des Bildes nach dem Kopieren, z.B. bild1.jpg
* @param int &$attachment_id Wenn angegeben, wird die ID des Bildes nach dem erfolgreichen anlegen in dieser Variable gespeichert.
*
* @return bool Gibt true zurück, wenn das Bild erfolgreich angelegt wurde. Andernfalls wird false zurückgegeben.
*/
function addImageToWordPressMediaLibrary(string $path_to_file, string $image, &$attachment_id = null): bool{
$file_array = ["name" => $image, "tmp_name" => $path_to_file];
// Bild in die Mediathek einfügen
$attachment_id = media_handle_sideload($file_array , 0, '');
if(!is_numeric($attachment_id )){
return false;
}
return true;
}
Beide Varianten benötigen, sofern die zusätzlichen Bildgrößen erstellt werden, einige Zeit um ein Bild hinzuzufügen.
Fazit #
Sowohl media_handle_sideload als auch wp_insert_attachment führen zum gewünschten Ergebnis. Die Funktion wp_insert_attachment ermöglicht es, Bilder auch ohne die vordefinierten Bildgrößen des Themes zur Mediathek hinzuzufügen. Erst durch den Aufruf von wp_generate_attachment_metadata und dem speichern der Daten durch wp_update_attachment_metadata werden die zusätzlichen Bildgrößen erstellt. Dies kann vorallem dann hilfreich sein, wenn mehrere Bilder auf einmal hinzugefügt werden sollen. Die verschiedenen Bildgrößen lassen sich dann später noch über Plugins wie RegenerateThumbnails hinzufügen.
Wie Forge12 mit solchen Themen arbeitet
Forge12 betreibt und verantwortet umsatzkritische WordPress- und WooCommerce-Systeme im laufenden Betrieb. Bevor wir Systeme übernehmen oder weiterentwickeln, analysieren wir sie vollständig – technisch, strukturell und betrieblich. Das System Audit ist der Einstiegspunkt für jede Zusammenarbeit.
Artikel von:
Marc Wagner
Marc Wagner ist Gründer der Forge12 Interactive GmbH und verantwortlich für Betrieb, Absicherung und Weiterentwicklung umsatzkritischer WordPress- und WooCommerce-Systeme.
Seit über 20 Jahren arbeitet er an Websites, Online-Shops und individuellen Softwarelösungen – vom Mittelstand bis zu Strukturen börsennotierter Unternehmen. Sein Fokus liegt nicht auf Projekten, sondern auf dauerhaftem Betrieb: stabile Systeme, klare Verantwortlichkeiten und technische Entscheidungen mit wirtschaftlicher Konsequenz.
Bei Forge12 begleitet er Unternehmen, die ihre Systeme nicht nur bauen, sondern langfristig sicher betreiben und automatisieren wollen.

