Isso fará o que você precisa :)
//Adding script to deligate Thumbnail Size
if ( function_exists( 'add_theme_support' ) ) {
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 960, 276, true ); // default Post Thumbnail dimensions
}
//Set different Thumbnail Sizes for Later
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'large-thumb', 960, 276, true ); //(cropped)
add_image_size( 'medium-thumb', 605, 174, true ); //(cropped)
add_image_size( 'small-thumb', 288, 83, true ); //(cropped)
add_image_size( 'small-square', 100, 100, true ); //(cropped)
}
<?php if ( has_post_thumbnail() ) {
global $post; //I usually define this in the function that outputs this, fyi
echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">';
echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
echo '</a>';
} else {
$thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
foreach ($thumbnails as $thumbnail) {
echo '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( $post->post_title ) . '">';
echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
echo '</a>';
}
}
?>
Ele está usando get_the_post_thumbnail, que também pode ajudá-lo, para que você não precise criar um monte de código fn que o WordPress já pode manipular para você, apenas um pensamento.
Isso usa $thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
para pegar um aleatório, se não houver um presente, isso pode ajudá-lo a seguir em frente.
Este pequeno echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
aviso 'small-thumb'
mostra que ele corresponde àqueles add_image_size fn's que reunimos algumas linhas. Então, se você tivesse, add_image_size( 'small-square', 100, 100, true );
poderia ligar 'small-square'
alternativamente.
Felicidades