Top-News.fr

Top-News > Informatique > Galerie WordPress : liens vers les images de tailles moyennes

Galerie WordPress : liens vers les images de tailles moyennes

galerie-wordpress-liens-vers-les-images-de-tailles-moyennes

Les galeries WordPress ne sont malheureusement pas personnalisables à 100% . Il est par exemple impossible de faire des liens de manière simple vers les images de tailles moyennes " medium " . Des plugins proposent d' améliorer le système des galeries ( chez moi ils ne fonctionnent malheureusement pas ) .
Si l' on veut par exemple comme sur ce blog photo Suicide Girls linker les images de tailles moyennes dans les galeries il faut modifier le code du wordpress ( il doit être possible également avec les shorcodes ou les filtres de faire la même chose , mais pas trop le temps et l' envie de me prendre la tête ) .
Une solution proposée par http://ursimon.musichall.cz/?p=561 est la suivante : modifier le fichier wp-includes/media.php . Voici le code proposé par le blogeur ( j' ai ajouté une ligne pour avoir un lien vers l' image en taille réelle sous la miniature ) . Ce code remplace une partie du code situé dans la fonction function gallery_shortcode($attr) .

foreach ( $attachments as $id => $attachment ) {
$link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
$img_replace = wp_get_attachment_image($id, 'medium', $icon = false);
$start=strpos($img_replace,'src="')+5;$end=strrpos($img_replace,'.jpg')+4;
$img_replace = substr($img_replace,$start,$end-$start);
//echo($img_replace);
$img_original = wp_get_attachment_image($id, 'full', $icon = false);
$start=strpos($img_original,'src="')+5;$end=strrpos($img_original,'.jpg')+4;
$img_original = substr($img_original,$start,$end-$start);
//        echo($img_original);
$link=str_replace($img_original,$img_replace,$link);
//echo($link);
$output .= "<{$itemtag} class='gallery-item'>";
$output .= "
<{$icontag} class='gallery-icon'>
$link
</{$icontag}>";
if ( $captiontag && trim($attachment->post_excerpt) ) {
$output .= '
<{$captiontag}>
' . wptexturize($attachment->post_excerpt) . '
</{$captiontag}>';
}
$output .= '<small><a href="'.$img_original.'" target="_blank">grande taille</a></small>';
$output .= "</{$itemtag}>";
if ( $columns > 0 && ++$i % $columns == 0 )
$output .= '<br style="clear: both" />';
}

Voici une autre petite fonction très intéressante utilisée également pour ce blog . bdw_get_images() permet de récupérer la première image d' une galerie insérée dans un post . Cette récupération permet notamment d' afficher les miniatures dans une boucle . J' ai légèrement modifié la fonction . Il faut dans ma version passer l' id du post ( que l' on peut récupérer avec la variable $id dans la boucle ) .

function bdw_get_images($iPostID) {

// Get the post ID
//    $iPostID = $post->ID;

// Get images for this post
$arrImages =& get_children('post_type=attachment&post_mime_type=image&post_parent=' . $iPostID );

// If images exist for this page
if($arrImages) {

// Get array keys representing attached image numbers
$arrKeys = array_keys($arrImages);

/******BEGIN BUBBLE SORT BY MENU ORDER************
// Put all image objects into new array with standard numeric keys (new array only needed while we sort the keys)
foreach($arrImages as $oImage) {
$arrNewImages[] = $oImage;
}

// Bubble sort image object array by menu_order TODO: Turn this into std "sort-by" function in functions.php
for($i = 0; $i < sizeof($arrNewImages) - 1; $i++) {
for($j = 0; $j < sizeof($arrNewImages) - 1; $j++) {
if((int)$arrNewImages[$j]->menu_order > (int)$arrNewImages[$j + 1]->menu_order) {
$oTemp = $arrNewImages[$j];
$arrNewImages[$j] = $arrNewImages[$j + 1];
$arrNewImages[$j + 1] = $oTemp;
}
}
}

// Reset arrKeys array
$arrKeys = array();

// Replace arrKeys with newly sorted object ids
foreach($arrNewImages as $oNewImage) {
$arrKeys[] = $oNewImage->ID;
}
******END BUBBLE SORT BY MENU ORDER**************/

// Get the first image attachment
$iNum = $arrKeys[0];

// Get the thumbnail url for the attachment
$sThumbUrl = wp_get_attachment_thumb_url($iNum);
// echo  $sThumbUrl ;

// 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="'.get_the_title($id).'" title="'.get_the_title($id).'" />' .
'</a>';

// Print the image
echo $sImgString;
}
}

son utilisation dans une boucle

<?php
if (have_posts()) :
while (have_posts()) : the_post();
bdw_get_images($id);
endwhile;
else :endif;
?>

La fonction bdw_get_images() a été écrite par http://www.rlmseo.com/blog/get-images-attached-to-post/

Un autre détail : si l' on veut lister les derniers posts sur un post utilisant le template " single.php " il faut penser à exclure de la boucle le post affiché .

<?php wp_reset_query();
$NOpost = array($post->ID);
$args = array(
'post__not_in' => $NOpost,
'showposts' => '3',
'orderbydate'=>'DESC'
);
query_posts( $args );
if (have_posts()){
while (have_posts()){ the_post();
bdw_get_images($id);
}} wp_reset_query(); ?>

plus de news sur Galerie WordPress : liens vers les images de tailles moyennes

dans les dossiers : • Informatique

Votre avis sur le billet : Galerie WordPress : liens vers les images de tailles moyennes