Desde la aparición de las imágenes destacadas en WordPress es un recurso muy utilizado por toda clase de temas de nuevo cuño, llegando a ser prácticamente imprescindible.
Ahora bien, si ya tenías un sitio con muchas entradas, definir las imágenes destacadas para las entradas antiguas puede ser un auténtico coñazo, siendo benévolo.
Afortunadamente hay maneras de hacerlo de manera que no tengamos que ir manualmente agregando imágenes destacadas en cada entrada ¿lo vemos?.
Primero veremos los modos que ya hemos visto anteriormente en Ayuda WordPress para definir imágenes destacadas por defecto:
- Miniaturas por defecto en todas las entradas: mediante código o plugin podemos definir una imagen destacada «a capón» en todas las entradas, algo genial si no te quieres complicar demasiado.
- Establecer varias imágenes destacadas a la vez: un modo más fino, donde al menos defines imágenes destacadas desde la ventana de Multimedia, pudiendo añadir imágenes por lotes.
- Automatizar imágenes destacadas por categoría: hilando aún más fino en este caso, pues definimos una imagen destacada por defecto según la categoría de la entrada. El código sería algo así:
< ?php if(in_category('categoria-1') { ?> <?php } elseif(in_category('categoria-2') { ?> <?php } else { ?> <?php } ?>
Y, volviendo al asunto que nos trae hoy aquí, una solución más elegante, y adaptada a cada entrada, sería que WordPress tome la primera imagen que encuentre en cada entrada y la use como imagen destacada ¿no?.
Bien, pues podemos hacer esta virguería de dos maneras:
Índice de contenidos
… Primera imagen como destacada automáticamente con código …
Lo que tenemos que hacer es abrir nuestro plugin de funciones y añadirle este código:
//primera imagen como destacada function auto_post_thumbnail() { global $post; $already_has_thumb = has_post_thumbnail($post->ID); if (!$already_has_thumb) { $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" ); if ($attached_image) { foreach ($attached_image as $attachment_id => $attachment) { set_post_thumbnail($post->ID, $attachment_id); } } else { set_post_thumbnail($post->ID, 'ID_imagen_por_defecto'); } } } //Ahora añadimos la función al loop add_action('the_post', 'auto_post_thumbnail'); add_action('save_post', 'auto_post_thumbnail'); add_action('draft_to_publish', 'auto_post_thumbnail'); add_action('new_to_publish', 'auto_post_thumbnail'); add_action('pending_to_publish', 'auto_post_thumbnail'); add_action('future_to_publish', 'auto_post_thumbnail');
Aquí solo tenemos que modificar el código en la línea 12, sustituyendo «ID_imagen_por_defecto» por el ID de la imagen a mostrar por defecto si no hubiese ninguna imagen en alguna entrada. Para saber el ID puedes usar el truco que expliqué en el artículo de cómo incluir y excluir imágenes en galerías WordPress.
El resto del código hace lo que promete: coge la primera imagen que encuentre en la entrada y la marca como destacada.
Este código tan chulo lo vi en Cristalab.
… Primera imagen como destacada automáticamente con plugin …
Y si te da aún miedo toquetear código y disfrutar de las enormes virtudes de dominar totalmente WordPress, siempre puedes usar el plugin – extrañamente – llamado «Automatically set 1st image as featured«, que viene a hacer lo mismo que el código anterior, solo que te pierdes la funcionalidad de la imagen por defecto si no hubiese imágenes en la entrada.
Lo mejor de este plugin es que no hay nada que configurar, lo instalas, lo activas y ya funciona.
¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!
Fernando, tengo un problema y es lo mismo que cómo tú lo utilizas. El código que diste funciona de maravilla, pero mira el problemón, el thumbnail se agrega pero también se repite la imagen en la portada…
Fernando, el plugin que diste a descargar falla en la instalación, y el error no es de WordPress. Es que el plugin tiene todo vacío a excepción de un archivo en el directorio trunk…
Vaya, gracias por comentarlo ¿avisaste en el foro de wordpress.org para que lo arregle el desarrollador?
Excelente el código, Fernando. Otro plugin desactivado y contando… 😉
Respetaría las entradas que ya tienen una imagen destacada?
muy buena función! gracias
Aqui otro plug que hace lo mismo
http://wordpress.org/extend/plugins/auto-featured-image/stats/
Y si respeta las entradas donde ya tiene imagen destacada
Buena aportación 😉
Bueno también se puede instalar este otro http://wordpress.org/extend/plugins/easy-add-thumbnail/ que casualmente hice yo, y diría que incluso fue el primero (3 años desde la primera versión publicada), luego le salieron imitadores 😛
este es el único que sigue estable, gracias
Bien dicho Samuel 😉
Hola, muy bueno el aporte, una consulta tengo 14 categoría de las cuales 13 siempre tienen imágenes y una que no porque es un comunicado. El código de la imagen destacada me funciona de maravilla. Pero mi pregunta es Puedo utilizar el código de imagen destacada automática y el de colocar una imagen para la categoría que no lleva imagen al mismo tiempo?
Pero las imagen de la entrada tiene un tamaño (500 x 400 supongamos)
y en la imagen destacada de la entrada que aparece en home junto con el extracto del post, no se ajusta el tamaño, es decir se sigue viendo del mismo tamaño y uno se da cuenta porque ve que solo aparece parte de dicha imagen :/
Alguien me ayuda con ese problema por favor. Soy un novato en esto y quisiera resolver ese detalle.
De antemano gracias.
Hola amigo, el codigo me funciona a medias, todas los post tienen imagenes pero cuando entro a la pagina toma como tmbnail la imagen por defecto para los que no tienen, y eso lo hace para todas apesar de que todas tienen una imagen por lo menos en el post, que crees que este pasando? lo puso en el archivo funtions.php crees que tenga algo que ver eso?
Hola Fernando el codigo no me funciona =/
It’s look good!
Hola Fernando, gracias por el post, estoy intentando hacer lo de que me coja la primera imagen cuando creo un articulo y que automaticamente lo ponga como thumbnail, pero no consigo que funcione, siempre me sale la imagen que he puesto en “ID_imagen_por_defecto”
Ya se que este articulo es un poco antiguo, ¿sera que ya no funciona ese codigo?
Un saludo y gracias!
Hola Fernando, una pregunta rápida: he puesto la función en el fichero functions.php, recargo mi web y funcionó perfectamente, pero ahora si quito el código que puse, esas imágenes ya quedaron insertadas en los posts como imágenes destacadas, o bien tengo que dejar ahí tu fragmento de código permanentemente para que me genere las imágenes destacadas?
No sé si me expliqué correctamente. Gracias por tu ayuda