Ich verwende diesen Code direkt aus dem Codex .
function echo_first_image ($postID)
{
$args = array(
'numberposts' => 1,
'order'=> 'ASC',
'post_mime_type' => 'image',
'post_parent' => $postID,
'post_status' => null,
'post_type' => 'attachment'
);
$attachments = get_children( $args );
//print_r($attachments);
if ($attachments) {
foreach($attachments as $attachment) {
$image_attributes = wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) ? wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) : wp_get_attachment_image_src( $attachment->ID, 'full' );
echo '<img src="'.wp_get_attachment_thumb_url( $attachment->ID ).'" class="current">';
}
}
}
Ich nenne es innerhalb der Schleife so echo_first_image ($post->ID);
Die Funktion ruft auf, aber es wird nichts ausgegeben ... soweit ich sehen kann, ist nichts drin $attachments
Ich habe ein Bild in dem Beitrag, den ich verwende. Es ist kein Bild oder eine Galerie, nur in der Post.
Mache ich etwas falsch oder stimmt überhaupt etwas mit dem Code nicht?
quelle
get_childre
Ein Anhang ist ein untergeordneter Beitrag, sodass dieses Beispiel nur für angehängte Inhalte verwendet werden kann.Ich schlage zwei Möglichkeiten vor:
Verwenden eines Plugins
Ich würde in Betracht ziehen, das Get The Image- Plugin zu verwenden, damit Sie Folgendes tun können:
Das Obige wird versuchen, die Dinge in dieser Reihenfolge zu tun:
Aufbau von Unterstützung in Ihrem Thema
Ich verwende jedoch eine Funktion in einem Plugin , die die ersten beiden Elemente der obigen Liste implementiert.
Sie können es so anpassen, dass es auch mit dem dritten Element in Dianas Snippet übereinstimmt:
Stecken Sie diese beiden Funktionen einfach in Ihre
functions.php
Datei und verwenden Sie sie in der Schleife wie folgt:quelle
Der Code scheint vollkommen sicher zu sein. Wie Sie sagten, haben Sie kein Bild an den Beitrag angehängt .
Gehen Sie zum Medienverwaltungsbereich und fügen Sie diesem Beitrag ein Bild hinzu.
Alternativ können Sie den Inhalt des Beitrags mit einem regulären Ausdruck für die darin enthaltenen Bilder verschrotten.
quelle
Ich verstehe, dass dies eine sehr alte Frage ist, aber ich stelle meine Antwort hier ein, da die meisten Antworten nicht für Leute geeignet sind, die neu in PHP sind.
preg_match ist kein guter Ansatz zum Parsen von HTML in PHP, da preg_match für reguläre Ausdrücke und HTML nicht für reguläre Ausdrücke gilt.
Wir können stattdessen DOM verwenden.
Die Verwendung von DOM ist wirklich gut, da Sie mehr tun können, als nur das erste Bild zu erhalten, und es ist der richtige Weg, HTML zu analysieren.
Ich wünschte, ich könnte eine Antwort für die Verwendung von WordPress-Funktionen (Funktionen von CODEX und Core) geben, um das erste Bild zu erhalten, aber das ist auch das Problem, mit dem ich mich befasse.
quelle
Dieser Code funktioniert für mich:
quelle