Tout savoir sur la gestion des miniatures (thumbnails) avec WordPress

Mis à jour le :

Depuis la version 2.9 de WordPress, les miniatures d’articles ont fait leur apparition dans l’éditeur, sous la forme d’un module longtemps appelé « Image à la Une » et aujourd’hui nommé « Image mise en avant ».

Ces miniatures nécessitent que le thème prenne en charge cette fonctionnalité. C’est automatique avec un thème à blocs depuis WordPress 5.9. Avec un thème classique, si l’image mise en avant n’apparaît pas dans l’éditeur, je vous propose de suivre ce tutoriel pour rendre compatible votre thème et bénéficier ainsi d’une fonctionnalité ô combien utile.

La plupart des blogs actuels affichent une miniature pour accrocher le lecteur à côté du titre et de la description d’un article. C’est le cas sur WP channel et sur un nombre incalculable de blogs.

Activer la prise en charge des miniatures d’articles

Cette étape ne concerne que les thèmes classiques. Pour activer la prise en charge des miniatures, rendez-vous dans Apparence > Éditeur de fichiers des thèmes. Vous pouvez également passer par votre client FTP favori pour éditer les fichiers du thème qui se trouvent dans le dossier /wp-content/themes/NOM_DU_THEME. Vous serez alors en mesure d’effectuer une sauvegarde au préalable. Si votre thème reçoit des mises à jour, faites plutôt la modification dans un thème enfant : sinon, la prochaine mise à jour l’effacera.

Editez ensuite le fichier functions.php et rajoutez les lignes de code suivantes :

function wpc_theme_setup() {
	add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'wpc_theme_setup' );

Ce bout de code active le module Image mise en avant dans l’éditeur de WordPress : il apparaît dans la barre latérale de droite, onglet Article, sous la forme d’un bouton Définir l’image mise en avant.

Onglet Article de la barre latérale de l’éditeur de WordPress pour un nouvel article, avec le bouton « Définir l’image mise en avant » en haut, au-dessus des réglages État, Publier, Slug, Auteur/autrice, Modèle, Commentaires et Format.
Le bouton Définir l’image mise en avant, dans la barre latérale de l’éditeur

Afficher les miniatures d’articles

Maintenant que vous disposez du module d’ajout de miniatures, il nous faut indiquer où nous souhaitons les voir apparaître sur le site. Typiquement, il nous faut intervenir dans la boucle de WordPress.

Pour rappel, la boucle ou loop affiche vos articles dans les différentes pages du site : accueil, catégorie, tags, etc.

Avec un thème classique

Pour ne pas rentrer dans la technique, localisez tout d’abord la ligne qui appelle le contenu ou l’extrait de votre article dans le fichier index.php :

<?php the_content(); ?>

Ou

<?php the_excerpt(); ?>

Placez ensuite cette ligne de code avant l’une ou l’autre de ces 2 fonctions :

<?php
if ( has_post_thumbnail() ) { // Vérifies qu'une miniature est associée à l'article.
  the_post_thumbnail();
}
?>

N’oubliez pas de sauvegarder le fichier en question puis réitérez l’opération pour l’ensemble des fichiers qui affichent la boucle (category.php, home.php si présent, etc.).

Avec un thème à blocs

Pas de code ici : c’est le bloc Image mise en avant qui affiche la miniature. Si votre thème ne l’affiche pas déjà dans vos listes d’articles, ouvrez Apparence > Éditeur, puis Modèles, et choisissez le modèle concerné (par exemple Page d’accueil du blog ou Toutes les archives). Dans la Boucle de requête, insérez le bloc Image mise en avant dans le bloc Modèle de publication, au-dessus du titre par exemple. Dans les réglages du bloc, l’option Résolution permet de choisir la taille d’image affichée.

Éditeur du site de WordPress avec le bloc Image mise en avant sélectionné dans la liste de publications du modèle Page d’accueil du blog de Twenty Twenty-Five, et le réglage Résolution, sur « Taille originale », dans la barre latérale du bloc.
Le bloc Image mise en avant d’une liste de publications, dans un modèle, avec son option Résolution

Utiliser différentes tailles de miniatures

Différentes tailles de miniatures existent. En réalité, il faut savoir que les miniatures d’articles peuvent servir à beaucoup de choses : pensez l’outil comme étant un module où l’utilisateur va indiquer une image.

La fonction d’affichage que nous venons de mettre dans le code peut donc être placée n’importe où, d’autant plus que des paramètres de taille existent.

the_post_thumbnail();                    // Size "post-thumbnail" if the theme defines it, else the original image
the_post_thumbnail( 'thumbnail' );       // Thumbnail: 150 x 150 px, cropped (default settings)
the_post_thumbnail( 'medium' );          // Medium: 300 x 300 px max
the_post_thumbnail( 'medium_large' );    // 768 px wide max
the_post_thumbnail( 'large' );           // Large: 1024 x 1024 px max
the_post_thumbnail( 'full' );            // Original image
the_post_thumbnail( array( 100, 100 ) ); // Smallest existing size that fits, displayed at 100 x 100 px max

Comme vous pouvez le constater, les tailles Miniature, Moyenne et Grande se basent sur les paramètres définis dans Réglages > Médias, rubriques Taille des miniatures, Taille moyenne et Grande taille ; les valeurs indiquées en commentaire sont celles par défaut. Sans paramètre, la fonction affiche l’image d’origine, sauf si votre thème a défini une taille post-thumbnail avec set_post_thumbnail_size(). Enfin, le dernier exemple ne crée aucun fichier : WordPress choisit la plus petite taille existante qui convient et l’affiche à 100 × 100 pixels au maximum.

Réglages des médias de WordPress, section Tailles des images : Taille des miniatures (largeur 150, hauteur 150, case « Recadrer les images pour parvenir aux dimensions exactes » cochée), Taille moyenne (300 × 300) et Grande taille (1024 × 1024).
Les tailles Miniature, Moyenne et Grande se règlent dans Réglages > Médias

Pour une taille vraiment sur mesure, déclarez-la dans le fichier functions.php avec la fonction add_image_size(). Ici, une taille de 640 × 360 pixels recadrée, que la seconde fonction ajoute aussi à l’option Résolution du bloc Image mise en avant :

function wpc_register_image_sizes() {
	add_image_size( 'wpc-card', 640, 360, true ); // 640 x 360 px, cropped.
}
add_action( 'after_setup_theme', 'wpc_register_image_sizes' );

// Offers the size in the Resolution setting of the Featured Image block.
function wpc_image_size_names( $sizes ) {
	$sizes['wpc-card'] = __( 'Card', 'wpchannel' );
	return $sizes;
}
add_filter( 'image_size_names_choose', 'wpc_image_size_names' );

Affichez-la ensuite avec the_post_thumbnail( 'wpc-card' );. WordPress ne crée cette taille que pour les images envoyées après sa déclaration : pour les images déjà présentes dans la médiathèque, régénérez les miniatures.

N.B : attention toutefois à ne pas créer des tailles à la chaîne sans prendre soin de vérifier l’espace de stockage fourni par votre hébergeur. Chaque taille crée un fichier image de plus sur votre serveur.

Que faire pour récupérer les anciennes miniatures ?

Si comme moi vous avez utilisé pendant des années des champs personnalisés pour indiquer l’URL de vos miniatures d’articles (avec le script timthumb.php par exemple), le plus durable est de les convertir en images mises en avant. L’extension Get the Image de Justin Tadlock n’est plus une piste : elle n’a pas été mise à jour depuis novembre 2017. Quant à timthumb.php, son auteur a cessé de le maintenir en 2014, après une faille de sécurité majeure : retirez-le de votre thème s’il y figure encore.

Si WP-CLI est disponible sur votre hébergement, ce script associe à chaque article l’image de la médiathèque dont l’adresse figure dans le champ personnalisé. Enregistrez-le dans un fichier wpc-featured-from-meta.php :

<?php
/**
 * Sets the featured image of each post from an old custom field holding an image URL.
 *
 * Dry run: wp eval-file wpc-featured-from-meta.php thumbnail
 * Apply:   wp eval-file wpc-featured-from-meta.php thumbnail apply
 */

defined( 'WP_CLI' ) || exit;

function wpc_featured_from_meta( $meta_key, $apply ) {
	$post_ids = get_posts(
		array(
			'post_type'      => 'post',
			'post_status'    => 'any',
			'posts_per_page' => -1,
			'fields'         => 'ids',
			'meta_key'       => $meta_key,
		)
	);

	foreach ( $post_ids as $post_id ) {
		if ( has_post_thumbnail( $post_id ) ) {
			continue;
		}

		$url           = trim( (string) get_post_meta( $post_id, $meta_key, true ) );
		$attachment_id = attachment_url_to_postid( $url );

		if ( ! $attachment_id ) {
			WP_CLI::warning( sprintf( 'Post %d: no Media Library file matches %s', $post_id, $url ) );
			continue;
		}

		if ( $apply ) {
			set_post_thumbnail( $post_id, $attachment_id );
		}

		WP_CLI::log( sprintf( 'Post %d: featured image %d%s', $post_id, $attachment_id, $apply ? '' : ' (dry run)' ) );
	}
}

wpc_featured_from_meta( $args[0] ?? 'thumbnail', 'apply' === ( $args[1] ?? '' ) );

Lancez-le une première fois sans apply : il affiche ce qu’il ferait, sans rien modifier. Après une sauvegarde de votre base de données, relancez-le avec apply. Remplacez thumbnail par le nom de votre champ personnalisé :

wp eval-file wpc-featured-from-meta.php thumbnail
wp eval-file wpc-featured-from-meta.php thumbnail apply

Le script ignore les articles qui ont déjà une image mise en avant et conserve vos champs personnalisés. Il signale les adresses qu’il ne retrouve pas dans la médiathèque, comme une image hébergée sur un autre site ou l’adresse d’une taille réduite : traitez ces articles à la main, puis supprimez le fichier du script.

Il est recommandé de toujours utiliser un thème WordPress basé sur la fonction de miniature fournie en natif. De cette manière, vous bénéficiez d’une plus grande stabilité pour les versions à venir et une meilleure compatibilité avec les plugins qui utilisent de plus en plus cette fonctionnalité. Vous pouvez également lire ce tutoriel sur la manière de récupérer la première image d’un article via PHP, évitant ainsi d’avoir recours aux miniatures.

Pour les articles sans image à la une, apprenez à définir une miniature d’article par défaut.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

35 réponses

  1. Avatar de Fatima Zahra
    Fatima Zahra

    Merci beaucoup
    J’ai importé prsq 41 000 article par des requêtes SQL via bd WordPress mais article il affiche seulement le contenu

    Si il y a une solution ou une requête pour importer les images mise en avant des articles pour s’affiche sur la page d’accueil
    Merci d’avance

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Voici 2 tutoriels qui pourraient répondre à votre demande : https://wpchannel.com/wordpress/tutoriels-wordpress/miniature-automatique-premiere-image-wordpress et https://wpchannel.com/wordpress/tutoriels-wordpress/recuperer-premiere-image-article-wordpress

      Sinon, vous devriez procéder à un import via des outils comme WP All Import ou équivalent.

      1. Avatar de fatima zahra
        fatima zahra

        d’accord merci beaucoup de votre réponse

  2. Avatar de vie dailes
    vie dailes

    Bonjour, merci tout d’abord pour toutes ces précieuses informations, je me suis laissée tentée par le thème Jupiter et j’avoue qu’en tant que novice, je rencontre certaines difficultés, je n’aborde même pas la question de visuel composer ( mais peut être que je devrais???)
    voilà : mon principal problème est les images à la une de chaque article, sont beaucoup trop grandes et surtout trop larges et même en ajoutant des pluggins de redimensionnement d’images, je ne parviens toujours pas à réduire la taille
    voyez plutôt : http://viedailes.org/
    j’hésite franchement à changer de thème juste pour cette raison car je pense que le problème n’est peut être bien difficile à résoudre
    je vous remercie par avance de l’aide que vous pourrez m’apporter
    Bien cordialement

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, si le redimensionnement en masse ne donne aucun résultat c’est qu’elles sont à la bonne taille pour le thème. Voyez pour changer de thème si nécessaire, vous pouvez également poser votre question sur le forum WPFR.

  3. Avatar de Sophie H
    Sophie H

    Bonjour,

    Encore novice sur WordPress, j’aimerais savoir s’il existe une solution (ou un plugin) pour que la miniature du post (qui s’affiche en page home) soit différente de l’image à la une (qui apparaît en tête de l’article) ?

    Merci d’avance

  4. Avatar de LG.
    LG.

    Bonjour,
    Comment fait on pour désactiver le fait que la miniature s’insère automatiquement dans l’article même ?

    Merci,,

  5. Avatar de Déb
    Déb

    Bonjour, Que faire si on a ni «  » ni «  » Un grand merci

  6. Avatar de aladin
    aladin

    Bonjour Aurélien, merci pour votre tuto, bon je voudrais savoir si je peux affichés 3formes de thumbnails les uns prés de l’autre sachant que les tailles des thumbnails sont 150*125, 150*291,310*125. Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Désolé je n’ai pas compris la question…

  7. Avatar de Pierre
    Pierre

    Bonjour Aurélien,
    Je viens d’installer le thème DIVI pour le blog de mon épouse, et ça commence à prendre forme.
    J’ai un soucis de doublon avec les thumbnails. Dans l’article je l’ai qui apparait aussi, avant l’image de l’article lui-même 🙁 y a t-il dans le epanel qq chose à décocher ?
    visible ici :
    http://www.kiwi-forme.net

    merci pour les lumières,
    Pierre

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Sans doute une option ePanel, à voir avec le support (désolé de la réponse tardive).

  8. Avatar de Nora
    Nora

    Bonjour , je ne sais pas si mon post a avoir avec le sujet mais je suis très embêtée depuis que j’ai créé mon blog. En effet lorsque je crée un article pour montrer mes réalisations de flyer et je mets l’image à la une en 600*250 , l’article a une autre aspect: lorsque je fais une préview du poste en ligne , l’image s’affiche en rectangle et le flyer est complètement déformé. Y’a t-il un moyen pour mes articles soient affichés avec la taille réelle de l’image à la une? Je vous remercie pour votre réponse . Voici le lien de mon blog pour avoir une idée .http://thats-design.com/brazilian-flyer-template

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Lors de l’import dans l’éditeur, veillez à choisir la taille réelle. Sinon, il faudra vérifier que le thème ne modifie pas certains aspects.

  9. Avatar de R-win
    R-win

    Bonjour. J’aurai une question par rapport à ça. Je voudrais insérer automatiquement sur mon blog wordpress qui est sous Mystique le bout de code suivant:  » itemprop= »image »  »
    juste avant src= »http://www.vbvhdbvhd.fr/monimage.jpg » dans la balise img et ce pour chacune des images rattaché à chacun de mes articles et ce dans le but d’avoir un plus jolie snippet avec une image à côté. A savoir que niveau gestion je n’ai jamais dis à wordpress de mettre telle ou telle image attaché à l’article. En fait c’est lui qui pris à chaque fois la première image.

    Merci beaucoup d’avance de votre aide

  10. Avatar de Scarlett
    Scarlett

    Merci beaucoup pour ce tuto, je cherchais désespérément la solution pour afficher mes images à la une sur mes pages tags et catégories ! 🙂

  11. Avatar de belhaj
    belhaj

    Bonjour, une très bonne astuce que je vient d’appliquer sur mon site mais avant j’avais les miniatures son des lien vers l’articles et je veux conserver les lien
    comment puis-je rentre ce fragement de code un lien

    1. Avatar de Veust80
      Veust80

      Bonjour

      Merci pour cette astuce vraiment pratique, mais par contre l’image sur mon site s’affiche avant le résumé de l’article, j’aurais souhaité avoir mon image sur la gauche avec le résumé qui s’affiche sur la droite (comme l’alignement dans les articles), enfin si c’est possible, cela améliorerais la présentation.
      Merci

  12. Avatar de Coline
    Coline

    Bonjour

    Mes thumbnails ne s’affichent pas…
    J’ai tout essayé… je comprend pas… Bon je suis plutot novice, je n’y comprend pas toujours grand chose en php…

    Voici le code que je voulais mettre dans un widget (j’ai ajouté des espace en espérant que ça s’affiche dans mon commentaire) :

    ’15’, ‘orderby’ => ‘rand’, ‘showposts’ => 1 ) ) ; ? >

    < a href="  » >

    —
    Le titre s’affiche bien mais pas l’image.
    J’ai aussi essayé en remplaçant the_post_thumbnail ( array ( 30, 30 ) ) par

    if ( has_post_thumbnail() ) { the_post_thumbnail ( ) ; }

    mais ça ne marche pas non plus…

    Je ne sais pas comment faire…

    Pouvez-vous m’aider?

    1. Avatar de Coline
      Coline

      Bon et bien l’affichage du code n’a pas fonctionné dans mon commentaire…

      Je voudrais afficher l’image d’un post de façon « random » 1 seul à la fois, bon ça, ça marche le titre s’affiche en random. Mais l’image ne s’affiche pas..

    2. Avatar de Coline
      Coline

      Bon dsl du dérangement :-/
      Il suffi que je demande de l’aide pour que tout de suite après je trouve la solution et je comprenne où étais mon erreur. lol
      Alors que j’y suis depuis tout l’après midi à cherche partout comment faire!

      Mais c’est quand même garce à ce blog que j’ai trouvé ma solution et que j’ai compris. Je ne savais pas que thumbnail concernait uniquement les image à la une lol.
      Donc j’ai trouvé ma solution ici :
      https://wpchannel.com/wordpress/tutoriels-wordpress/recuperer-premiere-image-article-wordpress/

      Merci beaucoup 🙂

  13. Avatar de Thibaut Grevet
    Thibaut Grevet

    Bonjour,
    Je me permet de vous contacter après multiples recherche…
    Je dispose d’un blog WordPress utilisant les thumbnails sur ma page d’accueil.
    Cependant je ne trouve pas le moyen de créer 2 sortes d’articles pour la page d’accueil permettant par exemple de poster une vidéo directement lisible sans passer par l’intérieur de l’article.
    Connaissez vous un moyen ?.
    Merci pour toute ces aides bien utiles..
    A bientôt.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      En fait, il faut utiliser les metaboxes qui permettent d’ajouter des champs dans l’éditeur dont on pourra récupérer les valeurs dans le thème – et donc sur le site. Elles reposent directement sur les champs personnalisé. On peut donc imaginer créer un champ video avec pour valeur le code embed.

      Pour l’affichage dans le code, cette page du codex est essentielle car elle renvoie vers la documentation adéquate : http://codex.wordpress.org/Custom_Fields

      Des plugins doivent le faire aussi je pense…

    2. Avatar de noaneo
      noaneo

      bonjour,
      vous avez modifié votre thème ? Sans créer de thème enfant?
      https://wpchannel.com/wordpress/tutoriels-wordpress/creer-themes-enfants-child-themes-wordpress/

  14. Avatar de britain
    britain

    bonjour,
    comment modifier ce code
    <img src="ID, ‘nivoimage’, true); ?>" alt="" title="" /></
    pour que la fonction « image à la une » soit active avec,merci.
    j’ai cherché sur google mais pour l’instant,rien trouvé.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Désolé le code ne passe pas dans le commentaire car il faut le formater en HTML (facile en collant le code en mode Visuel puis en récupérant ce dernier dans l’onglet HTML de l’éditeur de WordPress).

      Sinon, il y a le forum francophone de WordPress ou le Questions / réponses de GeekPress. 😉

      1. Avatar de britain
        britain

        j’ai avancé de tout façon,j’ai pourtant mis les balises codes pour poster ce code.j’ai fait avec la balise,que l’on voit dans les thèmes par défaut,à la hauteur des commentaires,à la ligne
        « Vous pouvez utiliser ces balises et attributs HTML : »
        Justement car j’ai pensé que c’est du HTML.
        je connais le forum wordpress-fr.net . Pour geekpress vous êtes sérieux ??

        1. Avatar de Aurélien Denis
          Aurélien Denis

          Oui sur GeekPress il y a un Q&A. 😉

          Et pour le code dans les commentaires, il faut utiliser la balise code mais aussi convertir les données en HTML.

          1. Avatar de britain
            britain

            alors j’ai une mauvaise opinion sur geekpress,je pensais que ce n’était qu’un site qui récupérait des codes que l’on trouve à gauche et à droite sur le net,c’est tout,sans vraiment de connaissances.
            Sinon c’est bon,j’ai trouvé un site qui m’a donné la solution.
            http://return-true.com/2010/09/getting-jquery-nivo-slider-to-work-inside-your-wordpress-theme/

  15. Avatar de Yvan
    Yvan

    Salut,
    Je suis Nul en technique et je ne vois pas ou placer la ligne dans code dans le fichier PHP ??
    Quelqu’un peut m’aider ?
    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Tu le places entre les balises PHP ouvrantes et fermantes. Cela dépend des fichiers fonctions.

      Le mieux est d’essayer en ayant fait une copie préalable.

      1. Avatar de Déb
        Déb

        Bonjour, merci pour toutes ces astuces formidables, je fais beaucoup de créa de contenu, je débute mon apprentissage en créa de blog et modifier les css me fait un peu peur, cependant je voudrais me lancer en intégrant le code que vous donnez en début d’article permettant l’accès au module image à la une mais je ne comprends pas où le rédiger ? N’importe où ? Un grand merci

  16. Avatar de Thomas@Installer Wordpress
    Thomas@Installer Wordpress

    Oui c’est beaucoup mieux quand un thème a les miniatures en natif. J’ai essayé sur un thème normal sans succès…

    Merci pour l’astuce en tout cas

  17. Avatar de Fabien
    Fabien

    Merci pour cet article très clair. Mon thème ne propose pas l’extrait et les miniatures. Voici mon problème résolu.

  18. Avatar de Jonathan
    Jonathan

    Merci pour l’astuce, wordpress avance bien!