Title: Set Defaults for Gallery Shortcode
Last modified: August 20, 2016

---

# Set Defaults for Gallery Shortcode

 *  [jpmclaughlin](https://wordpress.org/support/users/jpmclaughlin/)
 * (@jpmclaughlin)
 * [14 years, 12 months ago](https://wordpress.org/support/topic/set-defaults-for-gallery-shortcode/)
 * I’m using WordPress’ built-in Gallery shortcode, but I would like to change the
   default number of columns from 3 to 4.
 * I did find [this tip from 2 years ago](http://wordpress.org/support/topic/bug-post_gallery-filter-parameter-always-empty-string?replies=4)
   here in the Forums that seemed to point me in the right direction, from which
   I tried the following:
 *     ```
       add_filter('post_gallery', 'my_gallery_shortcode', 10, 2);
   
       function my_gallery_shortcode($output, $attr) {
       	extract(shortcode_atts(array(
       		'order'      => 'ASC',
       		'orderby'    => 'menu_order ID',
       		'id'         => $post->ID,
       		'itemtag'    => 'dl',
       		'icontag'    => 'dt',
       		'captiontag' => 'dd',
       		'columns'    => 4,
       		'size'       => 'thumbnail'
       	), $attr));
       }
       ```
   
 * I’m sure it’s something simple, but I can’t figure out what I’m doing wrong. 
   Any help would be appreciated.

Viewing 1 replies (of 1 total)

 *  [Lara Schenck](https://wordpress.org/support/users/notlaura/)
 * (@notlaura)
 * [14 years, 8 months ago](https://wordpress.org/support/topic/set-defaults-for-gallery-shortcode/#post-2131121)
 * Since you are filtering `post_gallery` you’ll need to copy the entire function
   from the core file then change the shortcode attributes to your liking. Entire
   function/filter looks like this:
 *     ```
       add_filter( 'post_gallery', 'my_post_gallery', 10, 2 );
       function my_post_gallery( $output, $attr) {
           global $post, $wp_locale;
   
           static $instance = 0;
           $instance++;
   
           extract(shortcode_atts(array(
               'order'      => 'ASC',
               'orderby'    => 'menu_order ID',
               'id'         => $post->ID,
               'itemtag'    => 'dl',
               'icontag'    => 'dt',
               'captiontag' => 'dd',
               'columns'    => 3,
               'size'       => 'wpf-thumb',
               'include'    => '',
               'exclude'    => ''
           ), $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}";
   
           $output = apply_filters('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 -->
               <div id='$selector' class='gallery galleryid-{$id}'>");
   
           $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='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;
       }
       ```
   
 * Credit to [this post at WP StackExchange.](http://wordpress.stackexchange.com/questions/4343/how-to-customise-the-output-of-the-wp-image-gallery-shortcode-from-a-plugin)

Viewing 1 replies (of 1 total)

The topic ‘Set Defaults for Gallery Shortcode’ is closed to new replies.

## Tags

 * [post_gallery](https://wordpress.org/support/topic-tag/post_gallery/)

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 1 reply
 * 2 participants
 * Last reply from: [Lara Schenck](https://wordpress.org/support/users/notlaura/)
 * Last activity: [14 years, 8 months ago](https://wordpress.org/support/topic/set-defaults-for-gallery-shortcode/#post-2131121)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
