[WordPress] Mostrar miniatura de los post

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.

[code]
if ( function_exists( ‘add_theme_support’ ) ) {
add_theme_support( ‘post-thumbnails’ );
}
[/code]

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.

[code]
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.’" />';
}
}
}
[/code]

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

[code]
<div class="entry">
<?php miniatura_post(200,211);?>
<?php the_content(‘Sigue leyendo &raquo;’); ?>
</div>
[/code]

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

¡Saludos!

Gerald

Aquí pondré todo los enlaces interesantes que vaya encontrando. Tengo una en cuenta del.icio.us pero resulta ser que muchos de mis favoritos tienden a desaparecer, entonces me veo obligado a "archivar" o "backupear" la información que me servirá en futuros proyectos.

You may also like...

2 Responses

  1. xakybride dice:

    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 dice:

    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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>