WordPress.org

Support

Support » How-To and Troubleshooting » WP gallery shortcode images link setting

WP gallery shortcode images link setting

  • jose
    Member

    @camelotweb

    Hi I am trying to add a new gallery to one of my sites and no matter what do I chose as linking to options (attachment file page or file) the output remains the same and it links only to the attachment pages. Is this a bug?

Viewing 10 replies - 1 through 10 (of 10 total)
  • WPyogi
    Forum Moderator

    @wpyogi

    jose
    Member

    @camelotweb

    Excuse me I should have posted like this:

    remove_shortcode('gallery', 'gallery_shortcode');
    add_shortcode('gallery', 'gallery_shortcode_fancybox');
    
    function gallery_shortcode_fancybox($attr) {
    	$post = get_post();
    
    	static $instance = 0;
    	$instance++;
    
    	if ( ! empty( $attr['ids'] ) ) {
    		// 'ids' is explicitly ordered, unless you specify otherwise.
    		if ( empty( $attr['orderby'] ) )
    			$attr['orderby'] = 'post__in';
    		$attr['include'] = $attr['ids'];
    	}
    
    	// 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'    => 'dl',
    		'icontag'    => 'dt',
    		'captiontag' => 'dd',
    		'columns'    => 3,
    		'size'       => 'thumbnail',
    		'include'    => '',
    		'exclude'    => ''
    	), $attr));
    
    	$id = intval($id);
    	if ( 'RAND' == $order )
    		$orderby = 'none';
    
    	if ( !empty($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) ) {
    		$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);
    	$icontag = tag_escape($icontag);
    	$valid_tags = wp_kses_allowed_html( 'post' );
    	if ( ! isset( $valid_tags[ $itemtag ] ) )
    		$itemtag = 'dl';
    	if ( ! isset( $valid_tags[ $captiontag ] ) )
    		$captiontag = 'dd';
    	if ( ! isset( $valid_tags[ $icontag ] ) )
    		$icontag = 'dt';
    
    	$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-top: 10px;
    				text-align: center;
    				width: {$itemwidth}%;
    			}
    			#{$selector} img {
    				border: 2px solid #cfcfcf;
    			}
    			#{$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 = wp_get_attachment_link($id, $size, false, false);
    
    		if ( $columns > 0 && ($i+1) % $columns == 0 ){
    		$output .= "<{$itemtag} class='gallery-item last'>";
    		}
    		else {
    		$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 .= "</{$itemtag}>";
    		if ( $columns > 0 && ++$i % $columns == 0 )
    			$output .= '<br style="clear: both" />';
    	}
    
    	$output .= "
    			<br style='clear: both;' />
    		</div>\n";
    
    	return $output;
    }

    esmi
    Forum Moderator

    @esmi

    Have you tried toggling the dropdown from “Media File” to “Attachment Page” and back?

    jose
    Member

    @camelotweb

    Yes, no matter what I chose the result is the same, linking to attachment images pages. I’ve tried it even changing my theme to twenty twelve and it still happens, that’s what I think it’s a bug of WP 3.5.1

    esmi
    Forum Moderator

    @esmi

    There is a known bug in WordPress 3.5.1 in which all gallery images are being linked to their attachment page rather than the raw image file. This bug should be fixed in the next WordPress update but, for now, you have two options that might work:

    1. If you have been using the Text editor to edit your Posts & Pages then locate the [gallery] shortcode and amend it to [gallery link="file"]

    2. Try editing the relevant Posts/Pages and creating the galleries again but, this time, toggle the “Link To” dropdown from Media File to Attachment page” and back again.

    Was going crazy trying to figure out what was going on! Thanks esmi and WPyogi for the update on trac #23298.

    vladis1980
    Member

    @vladis1980

    this damn bug is driving me crazy! Any news on when it will be fixed? I don’t intend to edit more than 1000 posts because of this….

    In 3.6 probably

    markkanning
    Member

    @markkanning

    If you want to force the link to be directly to the image itself, go to around line 762-ish where this code appears…

    $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);

    Change it to just this…

    $link = wp_get_attachment_link($id, $size, false, false);

    You should get direct links to the big image after that.

    @markkanning, which file does that code appear in???

    having to add link=”file” to every gallery before it shows up is getting old quick.

    I’d rather hack the core, then fingers crossed, after the next WP update it will be fixed.

    thank you!

Viewing 10 replies - 1 through 10 (of 10 total)
  • The topic ‘WP gallery shortcode images link setting’ is closed to new replies.