WordPress.org

Ready to get started?Download WordPress

Forums

WP gallery shortcode images link setting (11 posts)

  1. jose
    Member
    Posted 1 year ago #

    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?

  2. WPyogi
    Volunteer Moderator
    Posted 1 year ago #

  3. jose
    Member
    Posted 1 year ago #

    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;
    }
  4. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

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

  5. jose
    Member
    Posted 1 year ago #

    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

  6. esmi
    Theme Diva & Forum Moderator
    Posted 1 year ago #

    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.

  7. Paul Thomson
    Member
    Posted 1 year ago #

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

  8. vladis1980
    Member
    Posted 1 year ago #

    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....

  9. In 3.6 probably

  10. markkanning
    Member
    Posted 1 year ago #

    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.

  11. lyndonr
    Member
    Posted 1 year ago #

    @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!

Topic Closed

This topic has been closed to new replies.

About this Topic