Imagem em destaque do WordPress para postar anexo no fallback de miniatura padrão

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();?>&amp;h=300&amp;w=400&amp;zc=1" alt="<?php the_title_attribute(); ?>" class="attachment featured-image alignleft"></a>    <!-- with image resizing -->