Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Estas en el tema de Tutorial: Cómo extraer miniaturas de imágenes en Wordpress en el foro de WordPress en Foros del Web. Cómo extraer miniaturas de imágenes Primero que nada vamos a aprender un par de conceptos básicos acerca de las imágenes en Wordpress: Principio 1.- Cuando ...
  #1 (permalink)  
Antiguo 13/12/2008, 03:59
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Cómo extraer miniaturas de imágenes

Primero que nada vamos a aprender un par de conceptos básicos acerca de las imágenes en Wordpress:

Principio 1.- Cuando subimos una imagen desde nuestra computadora en el editor, éste automáticamente crea tres versiones: miniatura, media y tamaño real.

Principio 2.- No es necesario que la imagen aparezca en el artículo para poderla utilizar. Basta con subirla desde el panel de edición para que Wordpress la asocie con el post en cuestión. en otras palabras, una cosa es subirla y otra hacerla aparecer.


Qué vamos a lograr con esta función:
Luego de implementada estaremos capacitados para colocar cualquier imagen o miniatura en cualquier parte de nuestro sitio. Esto por supuesto se logra creando una función para llamar a la imagen.

Función probada en Wordpress 2.6.5. Aún no se ha probado en la 2.7 Probado exitosamente en la versión 2.7

Pasos

1.- Abre functions.php en el directorio de tu plantilla. Si el archivo no existe créalo. Copia este código:

Código PHP:
<?php
// Función para extraer imagen de artículo. Autor: metacortex. 13/12/2008 - 4:45
// http://www.forosdelweb.com
// Licencia GNU/GPL. Puedes remover estos créditos si quieres.

function mi_imagen($tamano '') {
  if ( 
$images get_children( array (
    
'post_parent'    => get_the_ID(),
    
'post_type'      => 'attachment',
    
'numberposts'    => 1,
    
'post_mime_type' => 'image'
   
)));
  {
    foreach( 
$images as $image ) {
      if(
$tamano == 'mini') {
      
$imagen wp_get_attachment_image$image->ID'thumbnail' );
      } if(
$tamano == 'medio') {
      
$imagen wp_get_attachment_image$image->ID'medium' );
      } if(
$tamano == 'grande') {
      
$imagen wp_get_attachment_image$image->ID'full' );
      }
      echo 
$imagen;
    }
  }
}
?>
2.- Ahora todo lo que tienes que hacer es utilizar este código para extraer la imagen del artículo:

Código PHP:
<?php mi_imagen($tamano 'mini'// Para miniaturas ?>
<?php mi_imagen
($tamano 'medio'// Para tamaño medio ?>
<?php mi_imagen
($tamano 'full'// Para tamaño completo ?>
El código por supuesto debe ir incluido en el loop o bucle en el que está metido the_content. Aquí un par de ejemplos:

Ejemplo 1 con get_posts

Código HTML:
<div class="capa">
<?php $lastposts = get_posts('category=7&numberposts=5');
  foreach($lastposts as $post) : setup_postdata($post); ?>
  <div class="articulo" id="articulo-<?php the_ID(); ?>">
    <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
    <div class="texto">
      <?php mi_imagen($tamano = 'mini'); ?>
      <?php the_content(__('Read more'));?>
    </div>
  </div>
  <?php endforeach; ?>
</div> 
Ejemplo 2 con el bucle clásico

Código HTML:
<div class="capa">
  <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  <h3><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
  <div class="texto">
    <?php mi_imagen($tamano = 'mini'); ?>
    <?php the_content(__('Read more'));?>
  </div>
  <?php endwhile; else: ?><?php endif; ?>
</div> 
Importante: Es necesario mencionar que la función traerá la primera imagen que subiste en cada post.

Configurar tamaños y estilos:

Tamaños de imagen: Puedes configurar los tamaños de miniatura y medio desde tu panel de control en Opciones > Misceláneas.

Estilos: Es posible que para tus estilos de miniatura desees arrimar la imagen a la izquierda y lograr que el texto se coloque al lado y fuya hacia abajo. Un ejemplo para lograrlo es colocando esto en tu hoja de estilos:

Código:
.texto img {
  display: block;
  float: left;
  margin-right: 8px;
}
Ideas:

a) Puedes jugar con los distintos tamaños de imagen para construir una página con aspecto interesante. Alternando distintos tamaños podrás sacar un máximo provecho gráfico sin menoscabo del flujo del contenido de tu index.

b) Igualmente es posible hacer un loop especial en tu widget y llamar las imágenes sin necesidad de traerte el contenido, a manera de una pequeña muestra de fotos aleatorias en determinada(s) categoría(s).

Fin del tutorial.


--------------------------------------


Comparte con honestidad
Si vas a copiar este tutorial en tu sitio, por favor referéncialo a la URL donde fue creado. En el presente existe una abstención por parte de varias personas en construir tutoriales, debido a que webmasters inescrupulosos los plagian sin colocar la fuente y algunos hasta se adjudican la autoría de los mismos. Ayúdanos a enriquecer la web dándole el crédito a quien lo merece, a fin de estimular la creación de nuevos recursos.

En este caso sólo debes colocar una referencia al presente tópico, de esta manera:

Eso es todo. No te cuesta nada y contribuyes mucho.

Última edición por metacortex; 30/01/2009 a las 12:32 Razón: Añadir datos
  #2 (permalink)  
Antiguo 13/12/2008, 08:50
elmajaron
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Muy bueno el tutorial, muchas gracias por compartirlo, un saludo.
  #3 (permalink)  
Antiguo 14/12/2008, 04:45
alexgbike
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Un gran tuto para la gente que está empezando
  #4 (permalink)  
Antiguo 15/12/2008, 04:38
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Probado en WP 2.7. Todo bien

Cita:
Iniciado por alexgbike Ver Mensaje
Un gran tuto para la gente que está empezando
Y para los no-tan-novatos también. Precisamente este punto es uno de los que más dolores de cabeza nos ha causado a muchos.
  #5 (permalink)  
Antiguo 28/12/2008, 06:44
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 7 meses
Puntos: 656
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Lo estoy probando con una aberración de theme que se me dió por crear y funciona de maravillas. Estoy usando wp 2.7.

Mil mil gracias.
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #6 (permalink)  
Antiguo 30/01/2009, 19:23
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Este tutorial esta de muerte, pero estaria aun mas si cuando no tenemos imagen del post en cuestion se añadiera una imagen por defecto.
Me estoy volviendo loco. si alguien sabe como solucionarlo que me responda.
Gracias.
  #7 (permalink)  
Antiguo 30/01/2009, 19:49
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Prueba así a ver:

Código PHP:
function mi_imagen($tamano '') {
  if ( 
$images get_children( array (
    
'post_parent'    => get_the_ID(),
    
'post_type'      => 'attachment',
    
'numberposts'    => 1,
    
'post_mime_type' => 'image'
   
)));
  {
    foreach( 
$images as $image ) {
      if(
$tamano == 'mini') {
      
$imagen wp_get_attachment_image$image->ID'thumbnail' );
      } if(
$tamano == 'medio') {
      
$imagen wp_get_attachment_image$image->ID'medium' );
      } if(
$tamano == 'grande') {
      
$imagen wp_get_attachment_image$image->ID'full' );
      } if(
$imagen == null ); {
      
$imagen '<img src="directorio/imagen.jpg" alt="imagen" />';
      }
      echo 
$imagen;
    }
  }

  #8 (permalink)  
Antiguo 31/01/2009, 14:31
 
Fecha de Ingreso: septiembre-2008
Mensajes: 71
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Muy buen tuto, pero tengo un problema, me da el siguiente error:

Código:
Warning: Invalid argument supplied for foreach() in /home/a9592863/public_html/wp-content/themes/freicurv/functions.php on line 14
  #9 (permalink)  
Antiguo 02/02/2009, 08:02
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Para metacortex.
Gracias por tu rapida respuesta pero no funciona, ahora me manda en todos los post la imagen del directorio, yo trabajo con wordpress 2.7 por si te sirve de algo.
Y no encuentro la manera de acelo bien.
  #10 (permalink)  
Antiguo 02/02/2009, 08:41
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

O.o!!! !esta muy bueno, yo me di la media vuelta para hacer lo mismo!!!!!!

juajauajaa

Gracias :D
  #11 (permalink)  
Antiguo 07/02/2009, 12:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 71
Antigüedad: 16 años, 2 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Cita:
Iniciado por vicarlone Ver Mensaje
Muy buen tuto, pero tengo un problema, me da el siguiente error:

Warning: Invalid argument supplied for foreach() in /home/a9592863/public_html/wp-content/themes/freicurv/functions.php on line 14
Sigo con el problema, alguna idea de como solucionarlo?
  #12 (permalink)  
Antiguo 08/02/2009, 08:29
 
Fecha de Ingreso: agosto-2004
Mensajes: 3
Antigüedad: 20 años, 2 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Tengo el mismo error. Me sale luego de modificar el functions.php de mi theme.
Código PHP:
WarningCannot modify header information headers already sent by (output started at /home/mpdp/public_html/wp-content/themes/wp-max/functions.php:620in /home/mpdp/public_html/wp-includes/pluggable.php on line 850 
  #13 (permalink)  
Antiguo 08/02/2009, 08:42
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Vicarlone, ese error te sale cuando no has subido una imagen vía editor.

Guido_cc, el error que muestras no tiene que ver con el script.
  #14 (permalink)  
Antiguo 02/03/2009, 09:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 113
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Hola Metacortex, muy buen tuto, pero tengoun problema, no me muestra la imagen. A que se puede deber?

Gracias de antemano.
__________________
Visita Mega - Noticias y mantente informado

Solo Famosos
  #15 (permalink)  
Antiguo 02/03/2009, 10:40
Avatar de lucasan
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: Cali - Colombia
Mensajes: 1.144
Antigüedad: 17 años, 5 meses
Puntos: 59
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Cita:
Iniciado por metacortex Ver Mensaje
Vicarlone, ese error te sale cuando no has subido una imagen vía editor.
Cierto, le añadí un if para comprobar si hay o no imágenes, y en caso de no haber no ejecuta el foreach.

No soy muy diestro en programación pero me funcionó, si alguien ve algún error que cuente

Meta, con tu permiso, la pequeña adición a tu código:

Código php:
Ver original
  1. function mi_imagen($tamano = '') {
  2.   if ( $images = get_children( array (
  3.     'post_parent'    => get_the_ID(),
  4.     'post_type'      => 'attachment',
  5.     'numberposts'    => 1,
  6.     'post_mime_type' => 'image'
  7.    )));
  8.   {
  9.     if(!empty($images)) { //Solo añadí esta línea
  10.         foreach( $images as $image ) {
  11.           if($tamano == 'mini') {
  12.           $imagen = wp_get_attachment_image( $image->ID, 'thumbnail' );
  13.           } if($tamano == 'medio') {
  14.           $imagen = wp_get_attachment_image( $image->ID, 'medium' );
  15.           } if($tamano == 'grande') {
  16.           $imagen = wp_get_attachment_image( $image->ID, 'full' );
  17.           }
  18.           echo $imagen;
  19.         }
  20.     } // y su respectivo cierre
  21.    
  22.   }
  23. }

Si se desea se podría añadir un else con un mensaje personalizado tipo "no hay imagen que mostrar" o algo asi.

Saludos.
__________________
Plan Original Desarrollo Web
~$>sudo apt-get install -f
"Asi debería arreglarse todo en la vida"
  #16 (permalink)  
Antiguo 04/03/2009, 04:56
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Excelente Lucas! De esa forma el error del foreach no se refleja . Buena esa.
  #17 (permalink)  
Antiguo 01/08/2009, 15:13
 
Fecha de Ingreso: febrero-2008
Mensajes: 296
Antigüedad: 16 años, 8 meses
Puntos: 2
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

En el index kiero mostrar el ultimo post de 3 categorias . Muestra muy bien el contenido y el titulo,pero la imagen que tiene e contenido completo del primer tema de la primera categoria se repite en las otras dos categorias. El titulo y excerpt se muestra bien,el problema esta en la imagen que es la misma para las categorias que muestro.
alguien?
__________________
Mi blog de Actualidad y Tecnologia
  #18 (permalink)  
Antiguo 27/10/2009, 11:33
 
Fecha de Ingreso: abril-2004
Mensajes: 634
Antigüedad: 20 años, 7 meses
Puntos: 2
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Hola

Alguien sabe porque este code funciona en algunas instalaciones y en otras no. Indistintamente lo uso en wordpress con versiones 2.7.1, 2.8.4 y 2.8.5. Sé bien que en las ocasiones que no anda basta con cargar de nuevo la imagen, pero de todas formas es molesto, poque tu subes la imagen, guardas el draft, ves como queda el post con preview, ves la imagen en el post, publicas el post.... y miras en el index o en la categoria del post y el thumbnail no esta...

....arghhh
__________________
Una a una resuelvo mis dudas... y una a una se me suman mas dudas... :adios:
  #19 (permalink)  
Antiguo 04/12/2009, 09:12
 
Fecha de Ingreso: noviembre-2009
Mensajes: 66
Antigüedad: 15 años
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

me puedes explicar cual es la funcion de estos codigos, ? es para colocar imagenes en los excerpt? que queden pequeños mosaicos de imagen en cada excpert del home?

muchas gracias
  #20 (permalink)  
Antiguo 06/12/2009, 03:53
Avatar de kok
kok
 
Fecha de Ingreso: agosto-2006
Mensajes: 138
Antigüedad: 18 años, 3 meses
Puntos: 2
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Yo por ejemplo hago una planilla de miniaturas de las imágenes de toda una categoría en una página especial para esa categoría y así tengo una galería automatizada en Wordpress.

O sea, que utilidades puede tener muchas.
  #21 (permalink)  
Antiguo 21/12/2009, 23:53
 
Fecha de Ingreso: diciembre-2009
Mensajes: 34
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Muy pero muy bueno el tutorial! muy util en serio.
Tengo un pequeño problema, tengo instalado el plugin "lightbox-plus", por lo tanto en el archivo single.php en el codigo de la imagen me queda lo siguiente:

<a href="" rel="lightbox[uniqueID|filename]" title="my caption">
<?php mi_imagen($tamano = 'medio') // Para tamaño medio ?>
</a>

Que tendria que poner en href="" para que me muestre la imagen full que corresponde en cada post, probe mil cosas pero me levanta la misma en todos los post. Ojala alguien pueda ayudarme! Muchas Gracias a todos....
  #22 (permalink)  
Antiguo 22/12/2009, 01:30
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 5 meses
Puntos: 832
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Hola Bru88, bienvenido,

El código expuesto se convirtió en un plugin desde hace tiempo, puedes bajarlo de aquí, se te hará más fácil solucionar el problema que comentas:

http://wordpress.org/extend/plugins/wp-smart-image-ii/

Igualmente puedes estudiar el código, esta vez sin bugs y con más opciones.
  #23 (permalink)  
Antiguo 22/12/2009, 03:04
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 4 meses
Puntos: 429
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Excelente tuto que me servirá para arreglar plantillas que tiran de nosecuantas funciones y js para conseguir lo mismo :)

¡Gracias!
  #24 (permalink)  
Antiguo 22/12/2009, 12:36
 
Fecha de Ingreso: diciembre-2009
Mensajes: 34
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Gracias por la respuesta Metacortex! ahora lo voy a probar y luego comento. Saludos
  #25 (permalink)  
Antiguo 26/12/2011, 16:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Muy bueno el código.

Cuando no subo una imagen con el editor y la tomo para el post desde la biblioteca, el código no toma la imagen, como si no hubiera en el post, ¿habría alguna solución sencilla a esto?

Un saludo.
  #26 (permalink)  
Antiguo 29/01/2012, 07:46
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Tutorial: Cómo extraer miniaturas de imágenes en Wordpress

Bueno he conseguido hacer una función utilizando el código de metacortex y un código de la página de Wordpress que permite cargar también la imagen si se sube desde la biblioteca.

Solo utilizando el código de Wordpress que "matchea" la imagen:

Código PHP:
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)){ //Defines a default image
$first_img "/images/default.jpg";
}
return 
$first_img;

... carga las imágenes attached y las posteadas desde la biblioteca, pero si lo que se publica en un post es "una galería completa" y no se publica ninguna imagen a parte, no carga nada nada.

Utilizando los dos códigos he conseguido solucionar esto:

Código PHP:
function imagendepost() {
                       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)){                           
                           return 
'<img src="'$first_img.' " />';
                                }elseif( 
$images get_children( array ( 
                                    
'post_parent'    => get_the_ID(), 
                                    
'post_type'      => 'attachment'
                                    
'numberposts'    => 1
                                    
'post_mime_type' => 'image' 
                                     
))){                                                            
                                         foreach( 
$images as $image ) {                              
                                             
$imagen wp_get_attachment_image$image->ID'medium' );                              
                                             echo 
$imagen
                                             }}elseif(empty(
$first_img)){
                                                     
$first_img get_bloginfo('template_url')."/imagenes/noimage.jpg";
                                                     }
                                                      return 
'<img src="'$first_img.' " />';                      
                     } 
No se si se posible simplificar o mejorar el código, de momento me funciona.
Un saludo y gracias a Metacortex que sin el inicio de su código no habría solucionado lo que necesitaba.

Última edición por naked; 30/01/2012 a las 10:55
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 7 personas




La zona horaria es GMT -6. Ahora son las 04:02.