Ya muchas personas me preguntaron como hacer para mostrar miniaturas al lado de los post como por ejemplo tengo en las categorías de este blog. El asunto es bastante sencillo y no requiere más que un par de líneas de código que si bien son sencillas me llevaron más de un dolor de cabeza buscando en el codex de WordPress.
Lo primero que tenemos que hacer es definir donde queremos mostrar las miniaturas, puede ser en la pagina principal del blog, o como tengo yo, en las categorías y en el archivo, ahí voy a ejemplificar el tutorial.
Ahora empezamos a colocar los códigos, lo primero que debemos hacer es abrir el archivo que corresponde a los archivos del blog, en línea general y casi siempre se llama archive.php.
En este mismo archivo deberíamos incluir las líneas de código que coloco a continuación, es importante que estas se coloquen dentro del loop del worpress, sino el código no funciona, una forma sencilla de colocarlo es inmediatamente arriba el titulo de la entrada, de esa forma nos garantizamos colocar el código en el lugar correcto.
Para el que no lo conoce el loop de WordPress tiene esta forma:
<!--?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?-->
Y el código que muestra las miniaturas es el siguiente:
<?php $files = get_children("post_parent=$id&post_type=attachment&post_mime_type=image"); if($files){ $keys = array_keys($files); $num=$keys[0]; $thumb=wp_get_attachment_thumb_url($num); print "<img src="$thumb" alt=".get_the_title()." width="90" height="90" />"; }else{ print "<img src="default.png" alt="" width="90" height="90" />"; } ?>
El código es muy sencillo de entender, pero para no entrar en detalles le resumo lo mas importante para que puedan personalizar las miniaturas del blog.
- El width y el height son las medidas de la miniaturas, en el ejemplo es 90×90.
- La imagen alternativa, en el ejemplo default.png. Esto es importante, puesto que cuando el post no tenga ninguna imagen se mostrara esa en la miniatura. Por lo tanto les recomiendo que elijan una imagen bastante genérica, como en mi caso puede ser el logo del blog tranquilamente.
Una vez que hicimos esto si vemos el archivo del blog se tendría que mostrar la miniatura, probablemente en cualquier lugar ya que todavía no tenemos ningún estilo css asociado a estas imágenes. Para hacer esto hay varias formas, no puedo escribirlas porque depende en gran medida del theme en cuestión, pero no es complicado basta con crear una clase llamada thumbnail y listo. Por ejemplo:
.thumbnail{ float: left; margin: 10px; }
Luego tendremos que jugar con posiciones, colores de enlaces, etc. Repito, no es complicado, pero depende de cada theme.
Un detalle: dependiendo del theme de nuestro blog la entrada se mostrara completa o no, en caso de mostrarse completa podemos reemplazar el código en el archive.php que dice:
<?php the_content(); ?>
Por este otro
<?php the_excerpt(); ?>
Y de esa forma se mostrara solo un extracto. Es muy sencillo y con un poco de paciencia podemos hacer que quede muy bien.
Un detalle para obtener mejores resultados, la miniatura la genera WordPress solo y al momento de subir la imagen al crear una entrada, esta miniatura viene de un tamaño determinado, si por ejemplo nosotros mostramos unas miniaturas de mayor tamaño esta se píxela un poco, basta con ir al tablero de WP opción Settings -> Media -> Cambiar el tamaño de las miniaturas por el que nosotros queremos utilizar, de esta forma quedan perfectas y de excelente calidad.
Cualquier duda en los comentarios 😀
Jorge
16 años ago
Muchas Gracias!
Aunque no me funciona =(
creo que no se donde pegar el codigo =(
Aun no logro identificar El Loop =(
Podrias ayudarme?
Pablo
16 años ago
@Jorge: Como comento en el post, una forma sencilla es colocar el codigo de las miniaturas arriba de la etiqueta h1 o h2 del titulo del post. No obstante si no lo encuentras la forma del loop es como la que pegue arriba, pero puede tener algunos cambios menores, en el sitio de codex de wordpress encontraras otras opciones, si no lo encuentras luego de eso me avisas y vemos otra forma 😀
Jorge
16 años ago
Ahh ok, ya lo cambié de sitio (lo habia pegado en otro lugar),
ahora me aparece el ‘cuadro’ por decirlo de alguna manera en donde deberia aparecer la imagen, pero dentro de ese cuadro me aparece el encabezado del post junto con el link hacia el =S
AMENITO
16 años ago
Muy interesante el post para los que usamos WordPress.
Jorge
16 años ago
hola! ya solucione mi problema anterior =D
y esta tal cual aparece en tu guia, pero en la portada me aparece la miniatura, y ademas me aparece la imagen tamaño normal debajo, q sera?
Jorge
16 años ago
y la ultima, para mostrar la miniatura por defecto (default.png en este caso) en donde debo guardarla?
J. Rojas
16 años ago
@Jorge: Por default wordpress al subir una imagen la guarda en el directorio: /wp-content/uploads/ fijate en guardarla ahí por medio de tu FTP.
@Pablo: Muy buena guía, hace unos meses leí de un plugin, pero era para la imagen en el post. No se podía aplicar para cualquier parte del blog… Y esto de ubicarlo en las categorías es genial 🙂
Un abrazo.
manicho
16 años ago
Pablo, primero que todo agradecerte de tomarte el tiempo de investigar este tema de las miniaturas para wordpress y publicarlo para personas inexpertas em woedpress como yo.
tengo un problema y es que tu codigo si funciona, lo he pegado en el loop de la pagina de archivos de mi template y el css genera el espacio para la imagen, pero no logro hacer que aparezcan las miniaturas de los posts, incluso mas raro aun si me aparece la imagen alternativa que deberia aparecer solo cuando el posts no tiene imagenes, que podre estar haciendo mal. Epero puedas colaborarme
Usar los thumbnails generados por Wordpress en un theme | Codigo Geek
16 años ago
[…] Plus armaron un tutorial bien sencillo que me ahorró tiempo y al que llegué gracias a DS. UPDATE: Pablo nos avisa en los comments que ya hace un tiempo posteó una solución a esto, y vaya sorpresa, el […]
Luis Parrado
16 años ago
Hola,unico El PHP me anda muy bien, el problema es que si las fotos son linkeadas desde otra pagina no me muestra las miniaturas, en mi caso esto es un problema por que tengo un blog madre que indexa contenido de otros, como no soy muy experto en PHP no se que parte del codigo tengo que cambiar para soluciionar este problema.
Pablo Muchas gracias por compartier esto con nosotros, es lo unico que funciona de lo que esta publicado en español.
Sauludos
Pablo
16 años ago
@Luis: mmm si el contenido es exterior depende, si tienes una direccion o url para enviarme te podria ayudar mas. Saludos 😀
Luis Parrado
16 años ago
Ok Pablo muchas gracias.
El blog donde puse el codogo (blog madre que indexa contenido de otros blogs) es este: http://lalos.com.ar/
De nuevo muchas gracias
solid
16 años ago
Hola, ante todo gracias por el código ya que yo usaba un javascript (thinthumb) y esto es mucho más ligero.
Mi problema es con el path de la imagen de sustitución. Tengo wordpress en una subcarpeta y cuando busca la imagen la busca en el dominio principal.
Entonces a la hora de crear un tema no le puedo meter la ruta,ya que cada uno se instala wordpress donde le da la gana. ¿o si? esa es mi duda.
María
16 años ago
Hola Pablo, antes que nada, muchas gracias por este post. Funciona de maravillas.
Tengo sólo una duda: No entiendo bien el criterio que utiliza el código para seleccionar qué miniatura muestra. Yo quiero hacer que muestre la primer imagen de cada post. ¿Es posible esto?
Saludos, y gracias de nuevo.
Oscar
15 años ago
Esta genial¡¡¡¡ A mi me funciona a la perfección.
¿Habría alguna forma de poder poner el nombre del post acompañando a la miniatura?
1000 gracias.
Pablo
15 años ago
@Oscar: Gracias por tu comentario, me alegro que te sirva! Con respecto a tu consulta mira la siguiente función: http://codex.wordpress.org/Template_Tags/the_title Saludos! 😀
Anthonie
15 años ago
Qué tal Pablo quería hacerte solo una consulta.
Quería saber si uso este tutorial para mostrar una miniatura por «post» como se hace para definir esta miniatura? si por ejemplo en el artículo tengo un video y quiero mostrar solo una imagen miniatura relacionada al video. Pero una ves dentro del artículo esta imagen no debería verse..
espero que me puedas apoyar con eso!
saludos cordiales y felicitaciones!
Borest
15 años ago
Hola Pablo, muy buena la explicación, solo queria saber como puedo agregar esas imagenes en miniatura a la pagina principal del blog? Es el mismo procedimiento? Saludos.
Como usar funcion more
15 años ago
[…] float: left; margin: 10px; } te sugiero que le agregas border para que quede mejor. Saludos. Codigo desde Kabytes Mi blog, Software y Web 2.0 Responder Citando + Responder al Tema […]
Usar este script en wordpress
15 años ago
[…] […]
guapacho
15 años ago
No sirve para la versión 3.01?
Cortar posts automaticamente solo en /tag y /category
14 años ago
[…] […]
Fabricio
14 años ago
El código PHP no se ve correctamente, gracias
Pablo
14 años ago
@Fabricio: Reparado 😀