Je travaille en ce moment sur le site internet d’un Designer (j’ajouterais le site une fois terminé sur le site de ma société: http://www.kune-studio.com).

J’ai voulu utiliser la galerie que propose Wordpress, pour créer un caroussel de photos. Le problème était simple, WP ajoute systématiquement unn saut de ligne entre les items de la galerie, et un dernier saut de ligne à la fin de la gallerie.

Voilà donc un moyen simple pour les supprimer. Ouvrez (ou créez) un fichier functions.php dans le dossier de votre thème et collez y ceci:

function my_gallery_shortcode($attr) {
	global $post;
 
	static $instance = 0;
	$instance++;
 
	// Allow plugins/themes to override the default gallery template.
	$output = apply_filters('post_gallery', '', $attr);
	if ( $output != '' )
		return $output;
 
	// We're trusting author input, so let's at least make sure it looks like a valid orderby statement
	if ( isset( $attr['orderby'] ) ) {
		$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
		if ( !$attr['orderby'] )
			unset( $attr['orderby'] );
	}
 
	extract(shortcode_atts(array(
		'order'      => 'ASC',
		'orderby'    => 'menu_order ID',
		'id'         => $post->ID,
		'itemtag'    => 'div',
		'icontag'    => 'span',
		'captiontag' => 'p',
		'columns'    => 3,
		'size'       => 'full'
	), $attr));
 
	$id = intval($id);
	$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
 
	if ( empty($attachments) )
		return '';
 
	if ( is_feed() ) {
		$output = "\n";
		foreach ( $attachments as $att_id => $attachment )
			$output .= wp_get_attachment_link($att_id, $size, true) . "\n";
		return $output;
	}
 
	$itemtag = tag_escape($itemtag);
	$captiontag = tag_escape($captiontag);
	$columns = intval($columns);
	$itemwidth = $columns > 0 ? floor(100/$columns) : 100;
 
	$selector = "gallery-{$instance}";
 
	$output = apply_filters('gallery_style', "
 
			#{$selector} {
				margin: auto;
			}
			#{$selector} .gallery-item {
				float: left;
				margin-top: 10px;
				text-align: center;
				width: {$itemwidth}%;			}
			#{$selector} img {
				border: 2px solid #cfcfcf;
			}
			#{$selector} .gallery-caption {
				margin-left: 0;
			}
 
		<!-- see gallery_shortcode() in wp-includes/media.php -->
		<div id="$selector" class="gallery galleryid-{$id}">");
 
	$i = 0;
	foreach ( $attachments as $id =&gt; $attachment ) {
		$link = isset($attr['link']) &amp;&amp; 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
 
		$output .= "&lt;{$itemtag} class='gallery-item'&gt;";
		$output .= "
			&lt;{$icontag} class='gallery-icon'&gt;
				$link
			<!--{$icontag}-->";
		if ( $captiontag &amp;&amp; trim($attachment-&gt;post_excerpt) ) {
			$output .= "
				&lt;{$captiontag} class='gallery-caption'&gt;
				" . wptexturize($attachment-&gt;post_excerpt) . "
				<!--{$captiontag}-->";
		}
		$output .= "<!--{$itemtag}-->";
		if ( $columns &gt; 0 &amp;&amp; ++$i % $columns == 0 )
			$output .= '<br>';
	}
 
	$output .= "
 
		</div>\n";
 
	return $output;
}

Quelques explications pour rendre plus clair les opérations.Tout d’abord on supprime le shortcode qui affiche la galery. Ensuite j’ai recopié la fonction qui génère la galerie en y apportant de petites modifications (les icontag et itentag par défaut). Enfin, j’ai supprimé le dernier saut de ligne à la fin pour ne plus avoir a l’afficher.

Pour les sauts de ligne entre les éléments de la galerie, il vous suffit de donner 0 pour le nombre de colonne.

Et voilà, le tour est joué!

Reblog this post [with Zemanta]

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

O comments at "Une galerie Wordpress sans saut de ligne"

Be the first commenter!

Comment Now!

Name* Mail Adress* Blog / Website

Spam Protection by WP-SpamFree