WordPress: usare la prima immagine di un post come thumbnail

Una semplice tecnica per ovviare al problema delle thumbnail mancanti in WordPress.

WordPress di Gabriele Romanato

In un sito in WordPress non sempre viene impostata una thumbnail per ogni post. Per questo motivo spesso è necessario colmare questa lacuna prendendo la prima immagine inserita in un post e usandola come thumbnail. Vediamo come fare.

Inserite il seguente codice nel file functions.php:


function get_first_image() {
  global $post, $posts;
  $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)) {
    $first_img = "/percorso/default.png";
  }
  return $first_img;
}

Quindi inserite la seguente routine nel vostro tema all'interno del Loop:


if ( get_the_post_thumbnail($post_id) != '' ) {

  echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
   the_post_thumbnail();
  echo '</a>';

} else {

 echo '<a href="'; the_permalink(); echo '" class="thumbnail-wrapper">';
 echo '<img src="';
 echo get_first_image();
 echo '" alt="" />';
 echo '</a>';

}

Ho usato get_the_post_thumbnail() invece che has_post_thumbnail() perchè il suo risultato è più affidabile.