WordPress : afficher toutes les miniatures liées à un article sur les pages média
Bon le titre de mon billet est un peu long mais c'est le seul moyen d'être clair (et encore) ^^. Comme j'ai déjà eu plusieurs demandes à ce sujet dont une tout récemment, je vous propose donc une fonction qui va vous permettre d'afficher toutes les miniatures des images liées à un article directement sur les pages médias (les pages où s'affichent les pièces jointes donc). L'intérêt est donc de permettre à vos visiteurs de naviguer plus facilement dans la galerie d'un article en ayant accès à l'ensemble des images sur chaque page d'image.
Je sens que ce n'est pas clair pour tout le monde, alors voici un exemple en image :
Vous voyez, ici on se trouve sur un page d'image et sur la droite on a l'ensemble de la galerie, avec en bonus une classe spécifique pour différencier la miniature qui correspond à l'image que l'on est en train de regarder.
Le script
Les portions de code suivantes sont à ajouter dans le fichier functions.php de votre thème.
# Fonction wall thumb (http://www.webinventif.com/wordpress-afficher-toutes-miniatures-liees-article-pages-media/)
########################################################
function wallthumb($id=false,$beforelist='<ul class="gallerythumb">',$afterlist='</ul>',$beforeitem='<li>',$afteritem='</li>'){
global $wp_query;
$goquery = $wp_query->post;//contenu de la requète
if(is_attachment()){
$ptitre = $goquery->post_title;//le titre de l'image
$idparent = $goquery->post_parent;//l'id de la page parente
if(!$id){//si pas d'id en argument, on tente de la recuperer
$id = $goquery->ID;
}
if($idparent == null || $idparent == '' || $idparent == 0){
return;//si l'image est orpheline (sans page parente) on stop la fonction
}
//$twice = get_posts('post_type=attachment&post_mime_type=image&numberposts=-1&order=ASC&post_status=null&post_parent='.$idparent);//recup des infos des pièces jointes a la page parente
$twice = get_children('post_type=attachment&post_mime_type=image&order=ASC&post_parent='.$idparent);//recup des infos des pièces jointes a la page parente
$stocklienimage = array();//pour stocker les liens images
if($twice){//si pièces jointes
foreach ($twice as $value) {//boucle
$classthumbactu = '';
if($value->ID == $id){//detection de l'image courante dans la boucle pour ajout d'une classe pour la differencier
$classthumbactu=' thumbactu';
}
$stocklienimage[$value->ID] = $beforeitem.'<a class="wallthumb'.$classthumbactu.'" href="'.get_attachment_link($value->ID).'" title="'.wp_specialchars( get_the_title($value->ID), 1 ).'" rel="attachment">'.wp_get_attachment_image( $value->ID, 'thumbnail' ).'</a>'.$afteritem;
}
}else{
return;
}
echo $beforelist.implode('', $stocklienimage).$afterlist;//affichage de la liste
}
}
Utilisation
Il vous suffit de placer ce bout de code dans votre thème à l'endroit ou vous souhaitez voir apparaitre le lien, en général dans attachment.php ou parfois dans image.php
Vous pouvez également personnaliser le type de liste en modifiant les attributs $beforelist
, $afterlist
, $beforeitem
, $afteritem
. Par exemple si vous vouliez un simple enchainement de miniatures contenu dans une DIV :
A noter que par défaut la liste comporte un ID "gallerythumb", que les images comportent la classe "attachment-thumbnail", que les liens des miniatures comportent la classe "wallthumb" et que le lien vers la miniature actuelle comporte en plus la classe "thumbactu"
Edit: j'ai inspiré Mehdi qui nous a pondu un code plus propre que le mien, voici le résultat (merci à lui, et du coup on se rend compte que je suis une quiche en PHP ^^ )
Au final
Je vous conseille d'éviter d'utiliser cette fonction si vos galeries comportent des centaines d'images car ça alourdirait considérablement la navigation, aussi bien visuellement qu'au niveau charge serveur. Penser bien évidement à utiliser un plugin du style wp-super-cache pour ménager les appels vers votre base de données.
Préférez l'utilisation d'une liste html plutôt qu'un simple suite d'images, quitte à utiliser un bout de CSS pour obtenir le visuel voulu.
-----
Pingback: Mes favoris du 25-08-09 au 26-08-09()
Pingback: Afficher les images de vos articles WordPress ! sur Geekeries.fr | Découvrir WordPress()
Pingback: Display all thumbs related to a specific page on a media page in WordPress()
Pingback: KRUZ-GRAPHIX | メディアにある画像のサムネールを表示するWordpressハック()
Pingback: Ver miniaturas relacionas en una página específica Wordpress | T CREA()
Pingback: Experts Developers()
Pingback: Muriel Daumerie()