En principio esto no sería complicado sabiendo que hay muchos plugins que lo hacen, y en otras muchas webs te explican como hacerlo desde el propio código con funciones.

Pero claro, estos plugins o explicaciones están fundamentados en el uso de la herramienta media del propio wordPress.

Sinceramente, hay algo que no me gusta mucho de esta herramienta, y es que guarda todos los elementos (imágenes, audio, video) en la tabla wp_post de la base de datos, justo donde se guardan los post y las páginas, por lo que si eres amigo de adornar los post con imágenes, esta tabla termina saturada con – a mi entender – contenido innecesario.

Es por eso que utilizo editores externos para la inserción de imágenes, por lo que los que las soluciones para extraer las imágenes de un post no son válidas.

Para esto, se podría crear una función de este tipo, que extraiga todas las imágenes de un post, y seleccione la primera encontrada.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function get_first_image_thumb()
{
// Recuperamos el post
$Html = strtolower(get_the_content());

// Extraemos todas las imagenes
$extrae = '/img .*src=["']([^ ^"^']*)["']/';

// Extraemos todas las imágenes
preg_match_all( $extrae , $Html , $matches );

// donde
// [1] -> segundo elemento del array "texto/imagenes"
// [0] -> primera imagen del array de "imagenes"
$image = $matches[1][0];

if($image)
{
echo '< div class="entry-thumb"/>
<img src="'
.$image.'" alt="" />
</div>'
;
} else {
return false;
}
}

Eso si, el tamaño de la miniatura ya dependería de vosotros. En mi caso como las imágenes no son muy grandes, modifico su tamaño con css.

Ahora simplemente nos quedaría llamar a esta función en la entrada del blog

1
<div><?php get_first_image_thumb(); ?><?php the_excerpt(); ?></div>

Esta función es extrapolable a cualquier otro cms. Simplemente habría que cambiar el valor de la variable “$Html” por el del texto del cuál queramos extraer las imágenes.