Estoy usando este código directamente del códice .
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">';
}
}
}
Lo llamo dentro del bucle así echo_first_image ($post->ID);
La función llama pero nada sale ... por lo que puedo ver, no hay nada en $attachments
Tengo una imagen en la publicación que estoy usando. No es una imagen destacada o en una galería, solo en la publicación.
¿Estoy haciendo algo mal, o hay algo mal con el código en primer lugar?
fuente
get_childre
, un archivo adjunto es una publicación secundaria, por lo que este ejemplo solo puede funcionar para el contenido adjunto.Sugiero dos maneras:
Usando un complemento
Consideraría usar el complemento Get The Image , para que pueda hacer algo como:
Lo anterior intentará hacer las cosas en este orden:
Construyendo apoyo en su tema
Sin embargo, estoy usando una función en un complemento que implementa los dos primeros elementos de la lista anterior.
Puede adaptarlo para que también coincida con el tercer elemento dentro del fragmento de Diana:
Simplemente pegue estas dos funciones en su
functions.php
archivo y úselas en el bucle como:fuente
El código parece perfectamente seguro. como dijiste, no tienes ninguna imagen adjunta a la publicación.
Considere ir al panel de administración de medios y adjunte una imagen a esa publicación.
Alternativamente, deseche el contenido de la publicación con una expresión regular para las imágenes que contiene.
fuente
Entiendo que esta es una pregunta muy antigua, pero estoy poniendo mi respuesta aquí, ya que la respuesta más votada no es apropiada para las personas que son nuevas en PHP.
preg_match no es un buen enfoque para analizar HTML en PHP ya que preg_match es para expresión regular y HTML no es expresión regular.
Podemos usar DOM en su lugar.
Usar DOM es realmente bueno ya que puedes hacer algo más que solo obtener la primera imagen y es la forma correcta de analizar html.
Desearía poder responder para usar las funciones de WordPress (funciones de CODEX y core) para obtener la primera imagen, pero ese es también el problema con el que estoy lidiando.
fuente
Este código me funciona:
fuente