4.951 leídas

[WordPress] Mostrar miniatura de los post

febrero 22, 11 by Gerald | Puesto en Programación, Wordpress

Desde WordPress 2.9 apareció la función llamada “Post Thumbnail” y desde ahí el poner imágenes para los post se volvió tan fácil como tener que activar está función colocando este código en el archivo functions.php de nuestro tema en wordpress.

if ( function_exists( 'add_theme_support' ) ) {
 add_theme_support( 'post-thumbnails' );
}

Pero yendo más allá de esta nueva funcionalidad del wordpress llegué a construír una función la cual fuerza a mostrar una imagen para cada post, en caso no haya una imagen asignada al post, está busca una imagen dentro del “content” o sino muestra una imagen por default. Pero además les pasamos como parámetros el ancho, el alto y una clase.

function miniatura_post($ancho='350',$alto='211', $clase='')
{
	global $post;
	//setup_postdata();
	if(has_post_thumbnail()) 
	{
		the_post_thumbnail(array($ancho,$alto));
	} 
	else 
	{
		
		$args = array(
			'post_type' => 'attachment',
			'numberposts' => 1,
			'post_parent' => $post->ID, // any parent
			); 
						
		$attachments = get_posts($args);
			
		if ($attachments)
		{
			// si hay attachments mostraremos la primera imagen
			$thumb_data = wp_get_attachment_image_src( $attachments[0]->ID,'medium' ); 
			$thumb_image = $thumb_data[0];
		}
		else
		{
			//  o sino, buscamos dentro del post por una imagen
			$output = preg_match_all('/<img.+src=['"]([^'"]+)['"].*>/i', $post->post_content, $matches);
			$thumb_image = $matches[1][0];
			
		}
			
		if(!$thumb_image)
		{
			echo '<img width="'.$ancho.'" height="'.$alto.'" class="'.$clase.'" src="'.get_bloginfo('template_directory').'/images/imagen_default.jpg" title="" alt=""/>';
		}
		else
		{
			echo '<img width="'.$ancho.'" height="'.$alto.'" class="'.$clase.'" src="'.$thumb_image.'" />';
		}
	}	
}

Y para usarlo por ejemplo en el loop de index.php o home.php:

 <div class="entry">
 <?php miniatura_post(200,211);?>
<?php the_content('Sigue leyendo &raquo;'); ?>
</div>

Espero les sirva esta función, poco a poco e ido acumulando varias funciones que son de gran utilidad.

¡Saludos!


Tambien te puede interesar

Tags: ,

Añade tu comentario

2 respuestas para este post

  1. xakybride Says:

    Gracias por la ayuda, no me salió a la primera pero era sólo corregir dos líneas:
    $output = preg_match_all(‘//i’, $post->post_content, $matches); y

    Por cierto, he probado este código y otros parecidos y al cambiar la imagen por otra o borrarla me sigue mostrando la antigua, sé que tiene que ver con la función wp_get_attachment_image_src. ¿qué puede ser? no lo entiendo :(

    Gracias de nuevo!

  2. Fernando Says:

    Hola Gerald

    me gustaría saber como hago para mostrar en la página principal debajo de cada titulo de la entrada cuantas imagenes tiene el post?

    le agradecería su ayuda

Leave a Reply