Mostrar Miniatura de Entrada Sin Ser Imagen Destacada
Espero poder explicar lo que busco aquí. En la página principal de mi proyecto actual, estoy mostrando la miniatura de la Imagen Destacada de cada entrada, junto con un extracto del contenido. En cada una de las páginas de las entradas, hay una galería WP predeterminada con 2 a 4 imágenes dentro.
Lo que quiero hacer es que mi cliente no tenga que usar siempre una Imagen Destacada en cada entrada para que la miniatura aparezca en la página de inicio. Es decir, ahora mismo, tiene que elegir una imagen como Destacada para que haya esa miniatura representativa para cada entrada en el loop de la página de inicio.
¿Puedo hacer que aunque no elija una imagen destacada para una entrada, siga habiendo una miniatura que represente la entrada? ¿Puedo hacer que automáticamente seleccione la primera imagen de la galería de la entrada si no se elige una imagen destacada?
Por si acaso, aquí está parte del código que estoy usando:
<div id="image-wrap">
<?php
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
?>
</div><!--fin image-wrap-->
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php the_title('<h2 class="entry-title"><a href="' .
get_permalink() . '" title="' . the_title_attribute('echo=0') . '"
rel="bookmark">', '</a></h2>'); ?>
<div class="entry-content">
<?php the_content(__('Continuar leyendo', 'example')); ?>
<?php wp_link_pages('before=<p class="pages">' . __('Páginas:','example') .
'&after=</p>'); ?>
</div>
</div>
<?php endwhile; ?>
<?php else : ?>
<p class="no-posts"><?php _e('Lo sentimos, ninguna entrada coincide con tus criterios',
'example'); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
Luego esto está en mi archivo FUNCTIONS:
// Este tema usa miniaturas de entrada
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 150, 100, true );
// Automáticamente hace que las miniaturas de imágenes destacadas sean enlaces clickeables
add_filter( 'post_thumbnail_html', 'my_post_image_html', 10, 3 );
function my_post_image_html( $html, $post_id, $post_image_id ) {
$html = '<a href="' . get_permalink( $post_id ) . '" title="' . esc_attr(
get_post_field( 'post_title', $post_id ) ) . '">' . $html . '</a>';
return $html;
}
// Este tema muestra la imagen destacada en tamaño completo en la página de la Entrada
function InsertFeaturedImage($content) {
global $post;
$original_content = $content;
if ( current_theme_supports( 'post-thumbnails' ) ) {
if ((is_page()) || (is_single())) {
$content = the_post_thumbnail('page-single');
$content .= $original_content;
}
}
return $content;
}
add_filter( 'the_content', 'InsertFeaturedImage' );
http://dependablecarcompany.com es la dirección si quieres ver a qué me refiero. Verás lo que digo cuando mires la entrada titulada: "1991 GMC Sierra". No usé una imagen destacada para la entrada, así que no se muestra ninguna miniatura. ¡Gracias de antemano!

No puedo recomendar lo suficiente el plugin Get the Image (de Justin Tadlock). Está entre los mejores que existen, con un código muy bien mantenido y limpio — lo más importante, hace lo que necesitas, ofreciéndote además un montón de opciones.
¿Cómo obtiene las imágenes?
Busca una imagen por campo personalizado (uno que elijas).
Si no hay imagen añadida por campo personalizado, comprueba si hay una imagen usando the_post_thumbnail() (la nueva función de imágenes de WP 2.9).
Si no encuentra ninguna imagen, toma una imagen adjunta a tu publicación.
Si no hay imágenes adjuntas, puede extraer una imagen del contenido de tu publicación (desactivado por defecto).
Si en este punto aún no se encuentra ninguna imagen, usará una imagen que establezcas (no está configurado por defecto).

Vale, bueno, más o menos voy entendiendo esto, pero ahora me encuentro con problemas. He usado esto para mostrar una miniatura si no hay una Imagen Destacada especificada: if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
else
{
get_the_image( array('size' => 'thumbnail'));
} Lo extraño es que la imagen que se muestra no tiene el mismo estilo que el resto de mis miniaturas. Si miras en http://dependablecarcompany.com

Además, ahora si haces clic en la entrada en cuestión: "1991 GMC Sierra", verás que la imagen principal ya no se muestra. Sin este plugin y con la forma original de llamar a la miniatura en el loop, la imagen principal de la entrada se mostraba justo arriba en el centro de la página. Puedes ver de lo que hablo si haces clic en cualquier otra entrada.

Vale, la forma en que funciona este plugin puede que no sea la más adecuada para tu tema tal como está, a menos que quieras modificar tu código. Pero, ¿has leído el archivo readme.html
que viene con el plugin?

Sí, estaba leyendo el archivo readme y esperaba encontrar algo que pudiera ayudar, pero tal vez no va a ser útil. Ugh. Realmente necesito que algo funcione.

Acabo de encontrar esto: http://www.960development.com/code-snippet/first-image-of-wordpress-post-gallery/ pero usa timthumb, y ahora no estoy seguro si debería usarlo debido a los problemas que tuvo hace un tiempo. ¿Qué opinas?

@AnthonyMyers Yo evitaría TimThumb (y similares) si fuera tú. Y creo que esa sería la sugerencia de cualquiera en WPSE también.

@AnthonyMyers Acabo de empezar una recompensa en tu pregunta. Obtendrás ayuda. De todos modos, mi reputación no me sirve de nada. :)

Aahan, ¡espero que esto no sea un adiós! Porque pareces dispuesto a gastar toda tu reputación ;o) ¡Felicitaciones por el espíritu inversor!

@AahanKrish ¡Muchísimas gracias por tu ayuda! Me indicaste la dirección correcta. ¡Estoy llegando! Solo estoy tratando de que las miniaturas (que no son Imágenes Destacadas) se muestren correctamente. No se están escalando correctamente como las miniaturas de las Imágenes Destacadas. Nuevamente, si miras el sitio dependablecarcompany.com, verás que no están exactamente bien. He usado css para darles anchos y altos máximos, pero simplemente no se escalan. Si no tienes tiempo para esta parte, lo entiendo. Lo básico de mi pregunta original ha sido respondido. ¡Muchísimas gracias!

Solo verifica si existe una imagen destacada, y si no está configurada, usa la primera imagen de la galería. Algo como esto:
$size = 'thumbnail'; // el tamaño que desees
if ( has_post_thumbnail() ) {
the_post_thumbnail( $size );
} else {
$attachments = get_children( array(
'post_parent' => get_the_ID(),
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
'numberposts' => 1)
);
foreach ( $attachments as $thumb_id => $attachment ) {
echo wp_get_attachment_image($thumb_id, $size);
}
}
Básicamente, si no existe una imagen destacada, entonces has_post_thumbnail() retornará false. Así que llamas a get_children para obtener las imágenes adjuntas a esta entrada. Nota que numberposts = 1, por lo que solo obtiene la primera. Luego muestras esa imagen usando wp_get_attachment_image.
Observa que usé el foreach aunque solo estoy obteniendo 1 imagen aquí. Esto es porque get_children retorna un array de entradas, independientemente de cuántas entradas retorne. Así que estoy "recorriendo" un array de tamaño 1. Si no hay imágenes, el array estará vacío y no se mostrará nada.
Si prefieres no usar get_children, entonces se podría construir un nuevo WP_Query similar para obtener la primera imagen adjunta de manera similar.
- Agregué la llave de cierre que faltaba en el bucle foreach.

Increíble. Perdóname, soy terrible con PHP, así que estoy seguro de que es una solución fácil, pero estoy recibiendo un error de sintaxis al intentar usar esto en Dreamweaver. (Sí, lo sé, ¡no debería usar DW, jaja!)

Ok, logré que este método funcione, pero genera una miniatura sin estilo y que está estirada/pixelada. ¡Gracias por tu respuesta de todos modos!

Prefiero usar el código que sugeriste, en lugar de un plugin, pero simplemente no muestra la miniatura correctamente. Pero de todos modos, ¿podrías ayudarme con mi pregunta relacionada sobre este problema? http://wordpress.stackexchange.com/questions/57861/how-to-display-a-posts-featured-image-with-this-code
