Nel loop della gallery inserire il seguente codice per eliminare l’immagine in evidenza dalla gallery:

<?php $thumb_id = get_post_thumbnail_id(get_the_ID()); // gets the post thumbnail ID
$args = array( 'order' => 'ASC',
		'orderby' => 'menu_order',
		'post_type' => 'attachment',
		'post_parent' => $post-&amp;gt;ID,
		'post_mime_type' => 'image',
		'post_status' => null,
		'numberposts' => -1,
		'exclude' => $thumb_id
	);

	$attachments = get_posts($args);
	if ($attachments) {
		foreach ($attachments as $attachment) {
			echo wp_get_attachment_image($attachment->ID, 'medium', false);
		}
	}
?>

oppure modificando lo shortcodes nel frontend:

$id = get_post_thumbnail_id(get_the_ID()); // gets the post thumbnail ID
echo do_shortcode('[galery exclude="'.$id.'"]'); // sostituisci galery con gallery 
  1. davide ha detto:

    Ciao
    Scusa la mia poca esperienza con wp…ma dove si trova questo loop della gallery?
    Grazie buona giornata

  2. Daniele Crupi Daniele Crupi ha detto:

    ciao! si trova nella function gallery_shortcode in /wp-includes/media.php
    Ti consiglio però se hai un pò di esperienza di fare un override della funzione nel file function.php all’interno del tuo tema in modo da non perdere le modifiche nel momento in cui aggiorni il core di WordPress. Se hai bisogno ti dico come si fa.

  3. Davide ha detto:

    Ciao Daniele
    Mi farebbe molto piacere se tu potessi spiegarmelo…GRAZIE!

  4. Daniele Crupi Daniele Crupi ha detto:

    certo! allora nel file functions.php, che trovi all’interno della directory del tuo tema, inserisci il seguente codice:

    <?php
    
    add_filter('post_gallery', 'my_gallery_shortcode',10,2);
    
    function my_gallery_shortcode($output, $attr) {
    	global $post, $wp_locale;
    
    	static $instance = 0;
    	$instance++;
    
    	// 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'] );
    	}
    	
    	$thumb_id = get_post_thumbnail_id(get_the_ID()); // gets the post thumbnail ID
    
    	extract(shortcode_atts(array(
    		'order'      => 'ASC',
    		'orderby'    => 'menu_order ID',
    		'id'         => $post->ID,
    		'itemtag'    => 'dl',
    		'icontag'    => 'dt',
    		'captiontag' => 'dd',
    		'columns'    => 3,
    		'size'       => 'thumbnail',
    		'include'    => '',
    		'exclude'    => $thumb_id
    	), $attr));
    
    	$id = intval($id);
    	if ( 'RAND' == $order )
    		$orderby = 'none';
    
    	if ( !empty($include) ) {
    		$include = preg_replace( '/[^0-9,]+/', '', $include );
    		$_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
    
    		$attachments = array();
    		foreach ( $_attachments as $key => $val ) {
    			$attachments[$val->ID] = $_attachments[$key];
    		}
    	} elseif ( !empty($exclude) ) {
    		$exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
    		$attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) );
    	} else {
    		$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;
    	$float = is_rtl() ? 'right' : 'left';
    
    	$selector = "gallery-{$instance}";
    
    	$gallery_style = $gallery_div = '';
    	if ( apply_filters( 'use_default_gallery_style', true ) )
    		$gallery_style = "
    		<style type='text/css'>
    			#{$selector} {
    				margin: auto;
    			}
    			#{$selector} .gallery-item {
    				float: {$float};
    				margin: 10px 10px 0 0;
    				text-align: center;
    				width: 121px;
    			}
    			
    				#{$selector} .gallery-item dl:last-child {
    				float: {$float};
    				margin: 10px 0 0 0;
    				text-align: center;
    				width: 121px;
    			}
    			
    			#{$selector} img {
    				border: 2px solid #cfcfcf;
    				width:123px;
    				height:93px;
    			}
    			#{$selector} .gallery-caption {
    				margin-left: 0;
    			}
    		</style>
    		<!-- see gallery_shortcode() in wp-includes/media.php -->";
    	$size_class = sanitize_html_class( $size );
    	$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
    	$output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
    
    	$i = 0;
    	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);
    
    		$output .= "<{$itemtag} class='gallery-item'>";
    		$output .= "
    			<{$icontag} class='gallery-icon'>
    				$link
    			</{$icontag}>";
    		if ( $captiontag && trim($attachment->post_excerpt) ) {
    			$output .= "
    				<{$captiontag} class='wp-caption-text gallery-caption'>
    				" . wptexturize($attachment->post_excerpt) . "
    				</{$captiontag}>";
    		}
    		$output .= "<p></p>";
    		$output .= "</{$itemtag}>";
    		
    		
    		if ( $columns > 0 && ++$i % $columns == 0 )
    			$output .= '<br style="clear: both" />';
    	}
    
    	$output .= "
    			<br style='clear: both;' />
    		</div>\n";
    
    	return $output;
    }  ?>