5.279 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.

[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!


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