Des vignettes pour chaque billet en page d’accueil

mercredi 20 mai 2009, par Dino

De nombreux utilisateurs de WordPress utilisent les champs personnalisés pour afficher des vignettes sur la page d’accueil de leur blog. C’est là une solution tout à fait fonctionnelle, mais qu’en est-il de la possibilité de récupérer automatiquement la première image d’un billet pour l’utiliser comme vignette ?

Solution - Sur le site Smashing Magazine, Jean-Baptiste Jung propose un hack simple qui permet, sans plugin, d’avoir une vignette pour chacun des billets et d’afficher celles-ci en page d’accueil de son blog.

1. Ouvril le fichier functions.php de son thème.

Note - Si celui-ci n’existe pas, le créer (en oubliant pas d’ouvrier et fermer la page par les balises <?php et ?>), il sera automatiquement pris en compte par WordPress.

2. Insérer dans le fichier le code suivant :

  1. function catch_that_image() {  
  2.   global $post, $posts;  
  3.   $first_img = '';  
  4.   ob_start();  
  5.   ob_end_clean();  
  6.   $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches);  
  7.   $first_img = $matches [1] [0];  
  8.  
  9.   if(emptyempty($first_img)){ //Defines a default image  
  10.     $first_img = "/images/default.jpg";  
  11.   }  
  12.   return $first_img;  
  13. }  

Ne pas oublier de définir une image par défaut qui sera utilisée au cas où le billet ne comporterait pas d’image.

3. Dans le fichier de votre page d’accueil (index.php) appeler la fonctions définie à l’étape précédente pour récupérer l’URL de notre image :

  1. <?php echo catch_that_image() ?>

Explications du code - La fonction catch_that_image() utilise la variable globale $post pour parcourir le contenu du billet à l’aide d’une expresion régulière. Si une image est trouvée, son URL est retournée par la fonction ; si il n’y a aucune image, c’est l’URL de la vignette par défaut qui est retournée.

Remarque - Cette solution tout à fait intéressante a tout de même une limite : elle alourdi quelque peu le calcul de notre page d’accueil... surtout si l"on utilise déjà quelques autres gadgets.

Sources

Répondre à cet article