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

11 août 2010 dans Tutoriels Wordpress

fonction-pour-recuperer-lurl-de-nimporte-quelle-image-dun-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
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;
		}
	}
?>	

Appel de la fonction

bdw_get_images($iPostID,$num_img,$type_img)

$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 :

bdw_get_images(get_the_ID(),0,"small");

Comment et où l’utiliser ?

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

Pour une image :

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

Dans un élément css :

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

13 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.

    • ben-wpSpirit

      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.

  2. Morgan

    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 ?

    • ben-wpSpirit

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

  3. Morgan

    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.

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

  5. 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 !

  6. jessica

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

    Merci à a vous,

    Jess

  7. manue

    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 !

  8. Marion

    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.

  9. howen

    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.

Trackbacks/Pingbacks

  1. Adding OG Tags in Wordpress « The Markos Giannopoulos Blog - [...] Code for attached images of a post is based from code from wordpress-spirir.com and [...]

Laisser un commentaire