Estou usando esse código diretamente do 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">';
}
}
}
Eu chamo isso dentro do loop assim echo_first_image ($post->ID);
A função chama, mas nada é gerado ... até onde eu posso ver, não há nada $attachments
Eu tenho uma imagem no post que estou usando. Não é uma imagem em destaque ou em uma galeria, apenas no post.
Estou fazendo algo errado ou há algo errado com o código em primeiro lugar?
fonte
get_childre
, um anexo é publicado por crianças, portanto este exemplo pode funcionar apenas para o conteúdo anexado.Sugiro duas maneiras:
Usando um plug-in
Eu consideraria usar o plug-in Get The Image , para que você pudesse fazer algo como:
O acima tentará fazer as coisas nesta ordem:
Construindo suporte no seu tema
No entanto, estou usando uma função em um plug - in que implementa os dois primeiros itens da lista acima.
Você pode adaptá-lo para também corresponder ao terceiro item no snippet de Diana:
Basta colar essas duas funções no seu
functions.php
arquivo e usá-las no loop, como:fonte
o código parece perfeitamente seguro. como você disse, você não tem nenhuma imagem anexada à postagem.
Considere ir ao painel de administração de mídia e anexar uma imagem a essa postagem.
Como alternativa, descarte o conteúdo da postagem com uma expressão regular para imagens.
fonte
Entendo que essa é uma pergunta muito antiga, mas estou colocando minha resposta aqui, já que a resposta mais votada não é apropriada para pessoas que são novas no PHP.
preg_match não é uma boa abordagem para analisar HTML em PHP, já que preg_match é para expressão regular e HTML não é expressão regular.
Em vez disso, podemos usar o DOM.
O uso do DOM é muito bom, pois você pode fazer outras coisas além de obter a primeira imagem e é o caminho certo para analisar o html.
Eu gostaria de poder colocar resposta para o uso de funções wordpress (funções do CODEX e do núcleo) para obter a primeira imagem, mas esse também é o problema com o qual estou lidando.
fonte
Este código funciona para mim:
fonte