title: Remove width and height from gallery images in Wordpress
body: <p>I am in the process of modifying a WP installation. </p>
  
  <p>I am using a modified Gallery shortcode to display the galleries, and a filter to remove width and height parameters which is required in order to keep pages responsive. </p>
  
  <p>My problem is that the galleries display properly when I link to an attachment page (the default). However when I link the thumbnail to a file the width and height parameters aren't removed by the filter. </p>
  
  <p>This is the filter:</p>
  
  <pre><code>/** remove gallery height and width*/
  add_image_size( 'my_gallery_shortcode', 200, 120, true );
  
  add_filter('wp_get_attachment_link', 'remove_img_width_height', 10, 4);
  
  function remove_img_width_height( $html, $post_id, $post_image_id, $post_thumbnail) {
  if ($post_thumbnail=='my_gallery_shortcode'){
  $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
  }
  return $html;
  }
  
  /** END remove gallery height and width*/
  </code></pre>
  
  <p>This is the custom gallery code:</p>
  
  <pre><code>/** custom gallery code */
  
  add_shortcode('gallery', 'my_gallery_shortcode');    
  function my_gallery_shortcode($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'      =&gt; 'ASC',
      'orderby'    =&gt; 'menu_order ID',
      'id'         =&gt; $post-&gt;ID,
      'itemtag'    =&gt; 'dl',
      'icontag'    =&gt; 'dt',
      'captiontag' =&gt; 'dd',
      'columns'    =&gt; 3,
      'size'       =&gt; 'medium',
      'include'    =&gt; '',
      'exclude'    =&gt; ''
  ), $attr));
  
  $id = intval($id);
  if ( 'RAND' == $order )
      $orderby = 'none';
  
  if ( !empty($include) ) {
      $_attachments = get_posts( array('include' =&gt; $include, 'post_status' =&gt; 'inherit', 'post_type' =&gt; 'attachment', 'post_mime_type' =&gt; 'image', 'order' =&gt; $order, 'orderby' =&gt; $orderby) );
  
      $attachments = array();
      foreach ( $_attachments as $key =&gt; $val ) {
          $attachments[$val-&gt;ID] = $_attachments[$key];
      }
  } elseif ( !empty($exclude) ) {
      $attachments = get_children( array('post_parent' =&gt; $id, 'exclude' =&gt; $exclude, 'post_status' =&gt; 'inherit', 'post_type' =&gt; 'attachment', 'post_mime_type' =&gt; 'image', 'order' =&gt; $order, 'orderby' =&gt; $orderby) );
  } else {
      $attachments = get_children( array('post_parent' =&gt; $id, 'post_status' =&gt; 'inherit', 'post_type' =&gt; 'attachment', 'post_mime_type' =&gt; 'image', 'order' =&gt; $order, 'orderby' =&gt; $orderby) );
  }
  
  if ( empty($attachments) )
      return '';
  
  if ( is_feed() ) {
      $output = "\n";
      foreach ( $attachments as $att_id =&gt; $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 &gt; 0 ? floor(100/$columns) : 100;
  $float = is_rtl() ? 'right' : 'left';
  
  $selector = "gallery-{$instance}";
  
  $gallery_style = $gallery_div = '';
  
  $size_class = sanitize_html_class( $size );
  $gallery_div = "&lt;div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'&gt;";
  $output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
  
  $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
          &lt;/{$icontag}&gt;";
      if ( $captiontag &amp;&amp; trim($attachment-&gt;post_excerpt) ) {
          $output .= "
              &lt;{$captiontag} class='wp-caption-text gallery-caption'&gt;
              " . wptexturize($attachment-&gt;post_excerpt) . "
              &lt;/{$captiontag}&gt;";
      }
      $output .= "&lt;/{$itemtag}&gt;";
  
  }
  
  $output .= "
      &lt;/div&gt;\n";
  
  return $output;
  }
  </code></pre>
  
  <p>Can anyone help ensure that gallery thumbnail images, in all sizes, are displayed without dimensions regardless of what they link to? </p>