Używam tego kodu bezpośrednio z kodeksu .
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">';
}
}
}
Nazywam to tak w pętli echo_first_image ($post->ID);
Funkcja wywołuje, ale nic nie jest wyprowadzane ... o ile widzę, że nic nie ma $attachments
Mam post w obrazie, którego używam. To nie jest wyróżniony obraz ani galeria, tylko post.
Czy robię coś złego, czy też coś jest nie tak z kodem?
theme-development
images
post-thumbnails
attachments
get-children
byronyasgur
źródło
źródło
get_childre
, załącznik jest postem podrzędnym, więc ten przykład może działać tylko w przypadku załączonej treści.Proponuję dwa sposoby:
Korzystanie z wtyczki
Zastanowiłbym się nad użyciem wtyczki Get The Image , abyś mógł zrobić coś takiego:
Powyżej spróbuje zrobić rzeczy w tej kolejności:
Budowanie wsparcia w Twoim motywie
Jednak używam funkcji we wtyczce, która implementuje dwa pierwsze elementy powyższej listy.
Możesz go dostosować tak, aby pasował również do trzeciego elementu we fragmencie Diany:
Wystarczy umieścić te dwie funkcje w
functions.php
pliku i użyć ich w pętli, takich jak:źródło
kod wydaje się całkowicie bezpieczny. jak powiedziałeś, nie masz żadnego obrazu dołączonego do postu.
Rozważ przejście do panelu administracyjnego multimediów i dołączenie obrazu do tego postu.
Alternatywnie, zeskrob treść postu za pomocą wyrażenia regularnego dla zawartych w nim obrazów.
źródło
Rozumiem, że to bardzo stare pytanie, ale zamieszczam tutaj swoją odpowiedź, ponieważ większość głosowanych odpowiedzi nie jest odpowiednia dla osób, które dopiero zaczynają pracę z PHP.
preg_match nie jest dobrym podejściem do analizowania HTML w PHP, ponieważ preg_match służy do wyrażenia regularnego, a HTML nie jest wyrażeniem regularnym.
Zamiast tego możemy użyć DOM.
Używanie DOM jest naprawdę dobre, ponieważ możesz zrobić coś więcej niż tylko uzyskanie pierwszego obrazu i jest to dobry sposób na przeanalizowanie HTML.
Chciałbym móc znaleźć odpowiedź na temat korzystania z funkcji wordpress (funkcje z CODEX-a i rdzenia), aby uzyskać pierwszy obraz, ale jest to również problem, z którym mam do czynienia.
źródło
Ten kod działa dla mnie:
źródło