O código a seguir é uma técnica de fallback de 3 níveis para miniaturas de imagens WP. Este código carrega primeiro a imagem em destaque se ela for atribuída à postagem. Se não estiver definido, o código irá procurar a primeira imagem anexada à postagem. Finalmente, se não houver nenhuma imagem associada à postagem, uma foto padrão ‘sem imagem’ será carregada, a qual deveria ter sido criada e carregada previamente.
/* Function to process your thumbnail & image
Copy and paste the code below to your functions.php */
function get_attachment_picture(){
global $post, $posts;
$image_id = get_post_thumbnail_id(); //read featured image data for image url
$attached_to_post = wp_get_attachment_image_src( $image_id, 'blog-grid' );
$related_thumbnail = $attached_to_post[0];
if($related_thumbnail == ""):
$attachments = get_children( array(
'post_parent' => get_the_ID(),
'post_type' => 'attachment',
'numberposts' => 1,
'post_status' => 'inherit',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ASC'
) );
if(!empty($attachments)): //check if there's an image attached or not
foreach ( $attachments as $attachment_id => $attachment ) {
if(wp_get_attachment_image($attachment_id) != ""):
$related_thumbnail = wp_get_attachment_url( $attachment_id );
endif;
}
else: // if no attachment
$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)):
$related_thumbnail = $first_img;
else:
$related_thumbnail = bloginfo('template_directory')."/images/no-image.jpg"; //define default thumbnail, you can use full url here.
endif;
endif;
endif;
echo $related_thumbnail;
}
O código acima retorna apenas um URL de imagem. Chame-o como um atributo src de imagem como abaixo. Para redimensionar a imagem, um script de redimensionamento de terceiros é necessário, como thumb.php ou timthumb.php.
Copie e cole o código abaixo em sua página de modelo, como index.php, archive.php, single.php, etc.
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><img src="<?php bloginfo('template_directory'); ?>/functions/thumb.php?src=<?php get_attachment_picture();?>&h=300&w=400&zc=1" alt="<?php the_title_attribute(); ?>" class="attachment featured-image alignleft"></a> <!-- with image resizing -->