Erstes Bild im WordPress Beitrag abrufen

Für mein eigenenes WordPress Theme habe ich nach einer Lösung gesucht das jeweils erste Bild eines Posts in der Übersicht anzuzeigen, da ich z.B. externe Bilder nicht als Beitragsbild setzen kann. Auf der Suche danach ob WordPress bereits solch eine Funktion bietet bin ich auf DIESEN Code gestoßen. Danke an Chris Coyier.

Allerdings hat das in meinem Fall nicht sonderlich gut funktioniert und mir das jeweils letzte Bild ausgespuckt.
Nach kurzer Recherche fand ich eraus dass die Regex die Bilder nicht trennt sondern vom öffnen des ersten Tags bis zum schließen des letzten alles als einen einzigen Block markiert.
Also habe ich die Regex angepasst.

function get_content_image()
{
    global $post;
    $first_img = '';
    preg_match_all('/<img[^>]*src=[\'"]([^\'"]*)[\'"][^>]*>/i', $post->post_content, $matches);
    $first_img = $matches [1] [0];
    if (empty($first_img)) { //Defines a default image
        $first_img = false;
    }
    return $first_img;
}

Die Funktion gibt nun false aus falls kein Bild vorhanden ist und ansonsten die URL des ersten. Es ist natürlich ein eher unsauber, tut aber seinen Zweck. Besser ist es nach wie vor ein Beitragsbild zu setzen, alleine der Performance wegen. Dieser Code läuft bei mir als Backup Lösung, falls (bei älteren Posts die ich übernommen habe) kein Beitragsbild gesetzt ist.

Ebenfalls zu bedenken ist die Rechtliche Situation beim Anzeigen von externen Bildern außerhalb ihres Kontexts (eingebettete Twitter und Facebook Posts etc. beispielsweise).

Kommentar verfassen