• jose

    (@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)
  • Thread Starter jose

    (@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;
    }

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

    Thread Starter jose

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

    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.

    P T

    (@pthomson87)

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

    vladis1980

    (@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….

    Moderator Ipstenu (Mika Epstein)

    (@ipstenu)

    ?????? Advisor and Activist

    In 3.6 probably

    markaronkanning

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