J'utilise une méthode pour trouver la première image incluse dans le contenu d'un message à afficher sous forme de vignette (un petit hacky, mais cela fonctionne). Cependant, certains auteurs ajoutent des images de petite taille, et comme cette fonction ne trouve que l’URL de cette taille, elle n’a pas l’air bon si elle est gonflée.
if ($img = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches))
return $img = $matches[1][0];
Il me faut donc un moyen d’obtenir l’URL de l’image d’origine, ou sa grande taille. Cela peut probablement être fait avec RegEx, mais quelle est la solution la plus rapide?
C'est en quelque sorte une solution alternative au tas de RegEx. Interrogez toutes les images jointes à la publication, obtenez la vignette de la première et affichez-la sous forme de vignette (vous pouvez même l'affecter à la vignette de publication si vous le souhaitez, afin de faciliter la prochaine exécution de la boucle). Donc, dans votre boucle, vous auriez:
if( have_posts() ) {
$image_mimes = array( 'image/jpeg', 'image/gif', 'image/png' );
while( have_posts() ) {
the_post();
$attachment_query = new WP_Query( array(
'post_type' => 'attachment',
'post_parent' => $post->ID,
'post_status' => 'inherit',
'post_mime_type' => $image_mimes,
'posts_per_page' => 1,
'fields' => 'ids', // Small and Quick query, only pull attachment IDs
) );
if( has_post_thumbnail() ) {
$thumbnail_html = get_the_post_thumbnail();
} elseif( $attachment_query->have_posts() ) {
$thumbnail_html = wp_get_attachment_image( $attachment_query->posts[0], 'thumbnail' );
wp_reset_query();
} else {
$thumbnail_html = 'Default Image HTML here - No Images Attached to Post';
}
echo $thumbnail_html;
}
}
Maintenant, il y a quelques inconvénients à ceci: