Générer automatiquement des miniatures sur la page d’accueil de son blog wordpress

On le sait tous les images ont de l'importance pour le lecteur qui aura peut être envie de poursuivre la lecture de votre blog en y voyant une belle illustration. Par principe illustrer ses articles est quelque chose à faire le plus souvent possible, mais quid de la page d'accueil qui nécessite tout autant d'attention que la page d'article? Voici un petit tutoriel qui va vous présenter comment faire pour afficher une miniature de la première image de l'article, le tout sans avoir besoin de plugin!

vignette sur la homepage de blog4auto.fr

vignette sur la homepage de blog4auto.fr

Premièrement il va falloir éditer la page appelée function.php qui se trouve dans votre thème mais aussi dans l'éditeur de thème dans l'interface d'administration de votre blog "Appearance/Editor/Function.php". A la fin de ce fichier il va falloir coller ce bout de code :

// Recherche de la premiere image
function catch_that_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];
// Si zero image
if(empty($first_img)){
$first_img = "";
}
$first_img = str_replace('http://www.domaine.fr', '', $first_img);
return $first_img;
}

Simplement l'objectif de cette fonction est de retrouver la première image de votre article et de récupérer l'url de cette dernière. S'il n'y a pas d'image vous pouvez afficher une image par défaut $first_img = "image/defaut.jpg"; mais dans ce cas je préfère ne rien afficher.

Donc on a maintenant grâce à cette fonction les adresses des premières images de chaque article, il faut donc générer la miniature sinon vous allez avoir les images dans la taille utilisée dans l'article. Pour générer les miniatures à une taille spécifique il va falloir utiliser un petit script qui va travailler à votre place, celui-ci s'appelle timthumb, ce script en php va donc prendre votre image et la recouper à la taille désirée. Vous pouvez télécharger la version disponible sur Google Code ou bien prendre ma version qui comporte quelques modifications (génération de thumb si l'image est trop petite notamment).

Pour installer ce script vous allez devoir créer un dossier "scripts" dans le répertoire de votre thème de votre blog mondomaine.fr/wp-content/themes/montheme/script et un répertoire "cache" pour stocker les images mondomaine.fr/wp-content/themes/montheme/script/cache, ces deux répertoires doivent être en 777 pour que l'on puisse y déposer les images générées. Une fois les deux répertoires créés il faut déposer le fichier timthumb.php dans script.

Maintenant il ne reste plus qu'à modifier votre page d'accueil, "Appearance/Editor" puis Main Index Template (index.php) pour appeler la fonction en y ajoutant ce bout de code à l'endroit où vous souhaitez afficher la vignette :

< ?php if (catch_that_image()){ ?>
<!-- Begin Thumb Container -->
<div class="postthumb">
              <a href="<?php the_permalink(); ?>">
               <img src="<?php bloginfo('template_directory'); ?/>/scripts/timthumb.php?src=< ?php echo catch_that_image() ?>&w=500&h=150&zc=1&q=100" alt="< ?php the_title(); ?>"/>
              </a>
</div><!-- End Thumb Container -->
<div class="clear"></div>
< ?php }; ?>

Notez que je fais un test pour savoir s'il y a une image ou pas et dans le cas où il n'y en ait pas je n'affiche rien (à adapter en fonction de vos besoins). Pour définir la taille des thumbs (vignettes) rien de plus simple dans la ligne : w=500&h=150&zc=1&q=100 il suffit de remplacer "w" par la largeur de votre choix et "h" par la hauteur de votre choix.

Avec cette méthode vous pouvez dire adieu aux champs personnalisés qui sont au niveau de la préhistoire pour l'affichage des vignettes sur la page d'accueil!

Source le forum de wordpress.org

7 Tweets 5 Other Comments

34 Commentaires

  • 1
    June 8, 2009 - 11:04 am | Permalink

    Tu sais que WordPress génère déjà des miniatures pour chaque image ? On peut même spécifier la taille dans Réglages>Médias.

  • 2
    June 8, 2009 - 11:07 am | Permalink

    Oui mais là tu peux générer des thumbnails de différentes tailles en fonction de ce que tu veux faire. Sur des thèmes magazines c’est un bon exemple d’utilisation des thumbnails de tailles différentes.

    Pour ma part j’utilise les miniatures générées par wordpress pour les galeries de photo et la méthode ci dessus pour la mise en page des articles…

  • 3
    June 8, 2009 - 11:29 am | Permalink

    Et pour couper les articles comme sur le blog auto après x mots automatiquement?

  • 4
    June 8, 2009 - 11:31 am | Permalink

    Avec cela : http://www.thunderguy.com/semi.....ss-plugin/

  • 5
    June 8, 2009 - 12:47 pm | Permalink

    Intéressant, merci pour cette info Henri :-)
    Question: quel plugin utilises-tu pour afficher une portion de code dans un billet?

    Merci

  • 6
    June 8, 2009 - 12:49 pm | Permalink

    Pas convaincu que ca soit la meilleure méthode pour gérer les miniatures :)
    Je ferai un article à ce sujet ;)

  • 7
    June 8, 2009 - 12:54 pm | Permalink

    J’attends ton article amaury, tjs à l’écoute de solution plus simple (et je sais que tu en as;) )

  • 8
    June 8, 2009 - 12:54 pm | Permalink

    @benoit celui-ci http://wordpress.org/extend/plugins/wp-syntax/

  • 9
    June 8, 2009 - 1:02 pm | Permalink

    Même chose qu’Amaury. Pour ma part j’ai testé ce script sur un blog type magazine avec 3 miniatures différentes pour chaque article (page d’accueil, catégorie, article)… résultat : explosion de mes ressources CPU. J’ai essayé de trouver des solutions sur le net…aucune n’a fonctionné pour moi. Finalement j’utilise un autre plugin (dont j’ai oublié le nom… je reposterais) qui me permet au moment ou j’écris l’article, d’uploader une image, de générer 3 images de tailles différentes, avec la possibilité de cadrer pour chacune exactement la partie de l’image qui m’intéresse. Ainsi les images sont générées une fois… pas de problème de CPU. Je vais rechercher le nom de ce plugin…

  • 10
    June 8, 2009 - 1:16 pm | Permalink

    De ce que j’en avais compris l’image n’est générée qu’une seule fois, elle est mise en cache donc normalement tu ne dois pas avoir de problème de CPU il me semble…

  • 11
    June 8, 2009 - 2:12 pm | Permalink

    Sauf que c’est le script php qui est appelé plutôt que lien direct vers l’image… enfin il me semble.

  • 12
    June 8, 2009 - 2:26 pm | Permalink

    Oui mais tu as le http header suivant : 304 Not Modified Document non-modifié depuis la dernière requête

  • 13
    June 8, 2009 - 3:34 pm | Permalink

    Peut être… A vrai dire cela dépasse mes connaissances actuelles. Je vais attendre l’article d’Amaury avec impatience.

  • 14
    June 8, 2009 - 7:34 pm | Permalink

    j’ai pas d’avis sur timthumb, sauf qu’il est beaucoup moins lourd que phpthumb. En revanche, il me semble que la fonction wp_get_attachment_url() récupère plus simplement une image…

  • 15
    June 9, 2009 - 11:05 pm | Permalink

    Un article en rapport: http://webdeveloperplus.com/wo.....our-theme/

  • 16
    June 9, 2009 - 11:11 pm | Permalink

    Pas mal en effet mais quid de la mise en forme de la galerie qui va être cassé si je veux des carrés de 150×150 par exemple mais c’est bien vu et cela doit à la fin consommer bcp moins de ressources serveur

  • 17
    June 9, 2009 - 11:13 pm | Permalink

    Il faudrait hacker la génération de thumb dans wordpress pour faire une palette de thumb au format désiré 150×150, 500×150 et ensuite les appeler selon le besoin…

  • 18
    June 10, 2009 - 5:25 am | Permalink

    je ne pense pas que les customs fields appartiennent à la préhistoire ;-) si on veut afficher une vignette qui n’est pas une image contenu dans l’article ou si c’est une image de l’article qui est recadrer “à la main” alors les customs fields sont vraiment utile.
    sinon comme Amaury je ne pense pas que ce soit une bonne idée, on peut très bien récupérer la première image de l’article via une requête sql.
    par exemple (vite fait) : select guid from wp_posts where post_type = “attachment” and post_parent = ID_DE__ARTICLE et on ajoute limit 1 pour avoir une seule image et on spécifie un type de classement par date de création (ASC ou DESC) pour avoir la première ou la dernière, par cette méthode il faut que l’image que l’on veut utiliser soit la première ou la dernière image uploadé sur le serveur et lié à cette article, pas moyen de savoir si c’est la première de l’article, mais bon c’est une méthode “vite faite”.

  • 19
    June 17, 2009 - 10:02 am | Permalink

    Bonjour,
    “vous allez devoir créer un dossier “script” dans le répertoire de votre thème”
    scipt avec un s à fin je suppose donc :
    mondomaine.fr/wp-content/themes/montheme/scripts/
    mondomaine.fr/wp-content/themes/montheme/scripts/cache
    Merci :o

  • 20
    June 17, 2009 - 10:13 am | Permalink

    re,
    “Maintenant il ne reste plus qu’à modifier votre page d’accueil, “Appearance/Editor” puis Main Index Template (index.php) pour appeler la fonction en y ajoutant ce bout de code à l’endroit où vous souhaitez afficher la vignette …”
    ce n’est pas très clair pour un novice, à quel endroit dans index.php j’insère ce code ? :(

  • 21
    June 17, 2009 - 10:24 am | Permalink

    A l’endroit où tu veux faire apparaitre la vignette donc après le titre et avant le contenu par exemple

  • 22
    December 26, 2009 - 3:30 am | Permalink

    bonsoir,
    Comment est-ce que vous procédez pour zoomer et incliner vos miniatures ?

  • 23
    June 2, 2010 - 9:58 am | Permalink

    Hello,

    merci pour cet article ! J’ai une question malheureusement un peu déconnectée du sujet initial, mais je n’arrive pas à la solutionner en écumant le web.
    Peut-être aurez-vous une petite idée?
    Jusqu’alors lorsque j’insérais un lien de mon blog sur mon wall FB, plusieurs thumbnails apparaissaient et je n’avais plus qu’à faire mon choix.
    Depuis quelques temps, aucun thumbnail ne s’affiche, comme si FB ne reconnaissait plus mes images. J’ai essayé de rajouter un peu de script à la main dans mes articles, mais cela n’a pas l’air de bouger.
    Une idée de votre côté ?
    merci
    liz

  • 29
    June 8, 2009 - 11:21 pm | Permalink

    Ah ben le coup des miniatures sans extension, je l’avais potassé en anglais la semaine dernière… Mais je me suis quand même rabattu sur un plugin, je devenais fou à tester des solutions

    This comment was originally posted on http://www.wordpress-fr.net/)“>WordPress Francophone

  • 30
    June 9, 2009 - 12:19 am | Permalink

    J’ai hâte d’installer la version finale pour voir ce que vous nous avez concocté de nouveau

    This comment was originally posted on http://www.wordpress-fr.net/)“>WordPress Francophone

  • 31
    June 9, 2009 - 12:55 pm | Permalink

    J’avais jamais vu, ni lu, l’info sur BuddyPress. Cela me semble très intéressant comme démarche.
    Je m’en vais tester cela

    This comment was originally posted on http://www.wordpress-fr.net/)“>WordPress Francophone

  • 32
    June 10, 2009 - 8:52 pm | Permalink

    le 10.09 ce soir? ou en fait c’est plutot le 11.09?

    This comment was originally posted on http://www.wordpress-fr.net/)“>WordPress Francophone

  • 33
    June 10, 2009 - 9:36 pm | Permalink

    Bonsoir,

    Je ne sais pas si vous avez essayé de votre côté mais moi il m’est impossible de faire l’installation de la 2.8 RC1 Fr

    Ca fait deux fois et toujours le même message… d’erreur…

    This comment was originally posted on http://www.wordpress-fr.net/)“>WordPress Francophone

  • Laisser un commentaire

    Votre email ne sera jamais publié. Les champs obligatoires sont marqués *

    *
    *

    Additional comments powered by BackType