Erstes Bild eines WordPress-Posts – URL ermitteln

Oftmals sind in WordPress-Themes Vorschaubilder zu Posts erwünscht, beispielsweise möchte man auf einer Artikelseite Bilder zu weiteren interessanten Einträgen anzeigen. Auch ich hatte diesen Wunsch und benötigte eine Funktion, die mir die URL zum ersten mit einem Artikel verknüpften Bild liefert. Da ich mir die nötigen Informationen selbst etwas zusammen suchen musste, möchte ich diese Funktion hier posten.

function get_first_image($post_id) {
	$atts = get_posts(array('post_type' => 'attachment', 'post_mime_type' => 'image', 'post_parent' => $post_id, 'offset' => 0, 'numberposts' => 1, 'orderby' => 'menu_order', 'order' => 'ASC'));
		if(!empty($atts[0]->guid))
			return $atts[0]->guid;
		else
			return get_template_directory_uri().'/images/no-image.png';
}

Anhand der Post-ID wird der erste Anhang im Bildformat geladen und die Bild-URL zurückgegeben. Die Funktion wird die die Theme-Datei „functions.php“ kopiert.

Beispiel: Möchte man in der header.php ein Vorschaubild für den nachfolgenden Post anzeigen, so kann man die Funktion folgendermaßen nutzen.

<?php
if(is_single()){
	echo '<img src="'.get_first_image(get_the_id()).'" alt="Vorschaubild" />';
}
?>

Dieser Artikel wurde vertaggt mit , , , , , , , .
Kategorien: Webdesign

Hat Ihnen dieser Artikel gefallen? - Dann abonnieren Sie vlblog um über neue Themen rund ums Web informiert zu werden.

3 Kommentare zu “Erstes Bild eines WordPress-Posts – URL ermitteln”

  1. Steffen sagt:

    Moin,
    hättest du evtl. auch eine Lösung, wie man alle ersten Bilder aller Posts inkl. deren verlinkten Seiten (also die Links, auf die von den jeweils ersten Bildern in einem Post gesetzt sind), auslesen und dann zufällig eines (inkl. dessen Link) ausgeben kann?

    • vitus37 sagt:

      Ich würde fast behaupten, dass es das garnicht mal braucht.

      Ab WP 3.0 (glaube ich) gibt es diese integrierte Titelbild-Funktionalität. Damit sollte es möglich sein bei bspw. Archiv-Listen direkt Bilder mit anzeigen zu lassen.

      Wie das konkret geht, kann ich dir leider nicht sagen. Soweit habe ich mich nicht damit beschäftigt.

Hinterlasse eine Antwort