Это будет делать то, что нужно :)
//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>';
}
}
?>
Он использует get_the_post_thumbnail, который также может помочь вам, поэтому вам не нужно создавать кучу кода Fn, который WordPress уже может обработать для вас, просто мысль.
Используется $thumbnails = get_posts(array('numberposts'=>1,'orderby'=>'rand','meta_key' => '_thumbnail_id'));
для получения случайного, если его нет, это может помочь вам двигаться вперед.
Этот бит echo get_the_post_thumbnail($thumbnail->ID, 'small-thumb', array( 'alt' => esc_attr( $post->post_title ), 'title' => esc_attr( $post->post_title ) ));
замечает, что 'small-thumb'
он соответствует тем add_image_size fn, которые мы собрали в несколько строк. Так что, если бы вы имели, add_image_size( 'small-square', 100, 100, true );
вы могли бы позвонить в качестве 'small-square'
альтернативы.
ура