Índice y archivos: imprimir la primera imagen de un post

Si queremos crear un índice o unos archivos donde se haga un uso extensivo de imágenes (al lado de los extractos, por ejemplo), siempre puede ser interesante hacerlo sin depender de plugins.

Hoy vamos a proponeros un código que lo hará posible, y que deberemos pegar en functions.php.

Se nos permitirá entonces disponer de un nuevo ‘template tag’, que podremos usar dentro de nuestros Loops, con el que imprimir la imagen en cuestión.

El código es el siguiente :

function catch_that_image() {
	global $post, $posts;
	$first_img = '';
	ob_start();
	ob_end_clean();
	$output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
	$first_img = $matches [1] [0];

	if(empty($first_img)){
	$first_img = "/images/default.jpg"; // default image
	}
return $first_img;
}

Recordemos que este código debe ir dentro de las declaraciones de apertura y cierre de php, que ya encontraremos en nuestro functions.php, o que habrá que añadir.

Nos dirigiremos ahora a nuestros archivos o índice, y usaremos el siguiente template tag, que equivaldrá a la primera imagen del post:

<?php echo catch_that_image(); ?>

Si lo quisiéramos linkando a la página final:

<a href="<?php the_permalink(); ?>"><?php echo catch_that_image(); ?></a>
Comentarios
  1. Darío Ferrer

    ¿Y no sería mejor -y más fiable- utilizar las funciones nativas de WordPress para tal fin?:

    http://www.forosdelweb.com/f118/tutorial-como-extraer-miniaturas-imagenes-wordpress-653664/

    Escrito el27/01/2010
  2. Gracias Darío, veo que con la función se pueden utilizar los tres tamaños que WP crea de cada imagen subida (miniatura, medio, grande) de modo que está bastante mejor.

    Escrito el27/01/2010
  3. jmm

    Ignacio,

    tu ejemplo es diferente ya que si tenemos alojdas las imagenes en otro lugar como por ejemplo picassa este guión es de maravillas.

    gracias

    Escrito el21/07/2010
  4. No me sale, que rabia…

    Escrito el23/09/2012

DEJA TU COMENTARIO