Fonction pour récupérer l’url de n’importe qu’elle image d’un post

Dans WordPress 3.0, chaque article possède une galerie d’images gérable sur ce bouton : depuis son article. Il est possible grâce à une petite fonction d’appeler n’importe qu’elle image présente dans la galerie. Chaque image uploadée sur WordPress peut-être suivant le besoin redimensionner par WordPress en plusieurs tailles : miniature, medium, original. Cela permet de créer des templates sur mesure.

La Fonction à copier dans fonction.php de son thème:

[php]<?php function bdw_get_images($iPostID,$num_img,$type_img) { // Get the post ID // Get images for this post //$arrImages =& get_children(‘post_type=attachment&post_mime_type=image&post_parent=’ . $iPostID ); $arrImages = get_children( array( ‘post_parent’ => $iPostID, ‘post_type’ => ‘attachment’, ‘post_mime_type’ => ‘image’, ‘orderby’ => ‘menu_order’, ‘order’ => ‘ASC’, ‘numberposts’ => 999 ) ); // If images exist for this page if($arrImages) { // Get array keys representing attached image numbers $arrKeys = array_keys($arrImages); // Get the image attachment with $num_img $iNum = $arrKeys[$num_img]; // Get the thumbnail url for the attachment if ($type_img == « small »){ $sThumbUrl = wp_get_attachment_thumb_url($iNum); } else{ if ($type_img == « medium »){ $sThumbUrl = wp_get_attachment_url($iNum, ‘medium’); } else{ $sThumbUrl = wp_get_attachment_url($iNum); } } // UNCOMMENT THIS IF YOU WANT THE FULL SIZE IMAGE INSTEAD OF THE THUMBNAIL //$sImageUrl = wp_get_attachment_url($iNum); // Build the <img> string // $sImgString = ‘<a href= »‘ . get_permalink() . ‘ »>’ . // ‘<img src= »‘ . $sThumbUrl . ‘ » width= »150″ height= »150″ alt= »Thumbnail Image » title= »Thumbnail Image » />’ . // ‘</a>’; // Print the image $sImgString = $sThumbUrl; if ($sImgString == «  »){ $sImgString = bloginfo(‘template_url’). »/images/mon-image-par-defaut.png »; } echo $sImgString; } else{ $sImgString = bloginfo(‘template_url’). »/images/mon-image-par-defaut.png »; echo $sImgString; } } ?> [/php]

Appel de la fonction

[php]bdw_get_images($iPostID,$num_img,$type_img)[/php]

$iPostID : identifiant de l’article. $num_img : 0 pour la première image, 1 pour la deuxième, etc… $type_img : small pour la miniature, medium pour la taille medium et big pour la taille original. ex :

[php]bdw_get_images(get_the_ID(),0, »small »);[/php]

Comment et où l’utiliser ?

A utiliser dans la loop (boucle): (loop-index.php,loop-ma-categorie.php, single.php ) Pour une image :

[xml]<img src= »<?php bdw_get_images(get_the_ID(),0, »small »)?> » alt= »" />[/xml]

Dans un élément css :

[xml]<div style= »width:200px;height:140px;background:url(<?php bdw_get_images(get_the_ID(),0, »small »). »?>) no-repeat center center »></div>[/xml]

Laisser un commentaire

17 Commentaires

  1. Bonjour,
    J’ai un soucis. Lorsqu’on change l’image dans l’article celui ci ne change pas avec la fonction. C’est l’ancienne image qui est affichée.
    Avez-vous une solution?

    merci.

    1. Effectivement, après l’ajout d’une image dans l’article en question il est nécessaire de retourner sur image, puis galerie et redéfinir l’ordre d’affichage par glisser/déposer. On remarque après l’ajout d’une image que l’ordre n’est pas définit pour cette nouvelle image.

      1. Merci beaucoup, ca m’a été très utile!

  2. Bonjour, lorsque j’ajoute le code dans le fichier fonctions.php, j’ai un warning lorsque je change de page

    Warning: Cannot modify header information – headers already sent by (output started at /home/XXXX/html/wp-content/themes/theme928/functions.php:32) in /home/XXXX/html/wp-includes/pluggable.php on line 897

    Avez vous une idée ?

    1. Bonjour, cela me semble bizarre, avez vous bien placer le code dans votre fichier functions.php sans altérer vos autres functions ?

      1. Il faut retirer autour du script les balises php :

  3. oui, j’ai ajouter le code au tout début ou même tout à la fin … toujours le warning.
    J’ai contourné le problème en utilisant un pluggin.

    1. il faut que tu le place avant le dernier <?php cela devrait fonctionner..

  4. [...] Code for attached images of a post is based from code from wordpress-spirir.com and [...]

  5. Merci pour le code. Je vais essayer tout de suite ;)

  6. Merci beaucoup pour cette petite fonction qui correspond parfaitement à ce que je cherchais !

    J’utilise cette fonction avec une autre que j’ai créé à laquelle je passe ne paramètres la largeur et la haute maximum que peut avoir l’image pour s’afficher correctement et j’obtiens en sortie le code html d’une image parfaite et prête à l’emploi !

  7. Hello,
    très utile ! est ce possible de l’utiliser en shortcode?!
    Si oui, un conseil serait le bienvennu.. :)

    Merci à a vous,

    Jess

  8. bonjour,
    j’ai un problème avec cette fontion : l’image que je souhaite s’affiche, malheureusement, la taille « medium » ne fonctionne pas, par contre small et big fonctionne… je ne sais pas d’où cela peut provenir, avez-vous une idée ?
    merci d’avance !

  9. En effet j’ai le même soucis que manue. Je récupère bien l’image mais elle ne prend pas la valeur medium alors que small et big fonctionnent.

  10. Je rencontre un problème lorsque j’essaye d’appliquer la fonction comme sur l’exemple :
    <img src=" » alt= »" />

    Rien n’apparait ?

    Vous avez une idée !!!

    J’ai bien suivi les consignes à la lettre et pourtant rien du tout.

  11. Concernant la taille medium, j’ai modifié le code pour que cela fonctionne. Il faut utiliser la fonction wp_get_attachment_image_src() :

    if ($type_img == « medium »){
    $sThumbUrl = wp_get_attachment_image_src($iNum, ‘medium’, false);
    }

    comme cette fonction renvoi un tableau, il ne faut pas oublier de modifier la fin :
    $sImgString = $sThumbUrl[0];

    1. Tadi

      Bonjour, je tente mais si je me doute que ce site n’est plus consulté!
      J’ai utilisé cette fonction pour une commande et le souci est qu’en fonction des opérations réalisées via le post (suppression d’images ou remplacement d’images) l’extrait du post en page d’accueil où les images sont récupérées ne suit pas! Par exemple, lorsqu’on supprime les images dans l’article, celle de l’extrait resteront…
      N’y a t-il pas un moyen de corriger ça?
      Merci