diff --git a/inc/bootstrap-wp-gallery.php b/inc/bootstrap-wp-gallery.php
index a2f56f6..6ccc70c 100644
--- a/inc/bootstrap-wp-gallery.php
+++ b/inc/bootstrap-wp-gallery.php
@@ -1,129 +1,105 @@
'ASC',
- 'orderby' => 'menu_order ID',
- 'id' => $post->ID,
- 'itemtag' => 'div',
- 'icontag' => 'div',
- 'captiontag' => 'div',
- 'columns' => 3,
- 'size' => 'thumbnail',
- 'exclude' => ''
- ), $attr ) );
-
- // Initialize
- $id = intval( $id );
- $attachments = array();
- if ( $order == 'RAND' ) $orderby = 'none';
-
-
- if ( ! empty( $include ) ) {
-
- // Include attribute is present
- $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 ) );
-
- // Setup attachments array
- foreach ( $_attachments as $key => $val ) {
- $attachments[ $val->ID ] = $_attachments[ $key ];
- }
-
- } else if ( ! empty( $exclude ) ) {
-
- // Exclude attribute is present
- $exclude = preg_replace( '/[^0-9,]+/', '', $exclude );
-
- // Setup attachments array
- $attachments = get_children( array( 'post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby ) );
- } else {
- // Setup attachments array
- $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 '';
-
- // Filter gallery differently for feeds
- if ( is_feed() ) {
- $output = "\n";
- foreach ( $attachments as $att_id => $attachment ) $output .= wp_get_attachment_link( $att_id, $size, true ) . "\n";
- return $output;
- }
-
- // Filter tags and attributes
- $itemtag = tag_escape( $itemtag );
- $captiontag = tag_escape( $captiontag );
- $columns = intval( $columns );
- $itemwidth = $columns > 0 ? floor( 12 / $columns ) : 100;
- $float = is_rtl() ? 'right' : 'left';
- $selector = "gallery-{$instance}";
-
- // Filter gallery CSS
- $output = apply_filters( 'gallery_style', "
-
-
"
- );
-
- // Iterate through the attachments in this gallery instance
- $i = 0;
- foreach ( $attachments as $id => $attachment ) {
-
- // Attachment link
- $link = isset( $attr['link'] ) && 'file' == $attr['link'] ? wp_get_attachment_link( $id, $size, false, false ) : wp_get_attachment_link( $id, $size, true, false );
-
- // Start itemtag
- $output .= "<{$itemtag} class='gallery-item col-md-{$itemwidth}'>";
-
- // icontag
- $output .= "
- <{$icontag} class='gallery-icon'>
- $link
- {$icontag}>";
-
- if ( $captiontag && trim( $attachment->post_excerpt ) ) {
-
- // captiontag
- $output .= "
- <{$captiontag} class='gallery-caption'>
- " . wptexturize($attachment->post_excerpt) . "
- {$captiontag}>";
-
- }
-
- // End itemtag
- $output .= "{$itemtag}>";
-
- // Line breaks by columns set
- if($columns > 0 && ++$i % $columns == 0) $output .= '
';
-
- }
-
- // End gallery output
- $output .= "
-
-
\n";
-
- return $output;
-
+// Replace with custom shortcode
+function shortcode_gallery($attr) {
+ $post = get_post();
+ static $instance = 0;
+ $instance++;
+ if (!empty($attr['ids'])) {
+ if (empty($attr['orderby'])) {
+ $attr['orderby'] = 'post__in';
+ }
+ $attr['include'] = $attr['ids'];
+ }
+ $output = apply_filters('post_gallery', '', $attr);
+ if ($output != '') {
+ return $output;
+ }
+ if (isset($attr['orderby'])) {
+ $attr['orderby'] = sanitize_sql_orderby($attr['orderby']);
+ if (!$attr['orderby']) {
+ unset($attr['orderby']);
+ }
+ }
+ extract(shortcode_atts([
+ 'order' => 'ASC',
+ 'orderby' => 'menu_order ID',
+ 'id' => $post->ID,
+ 'itemtag' => '',
+ 'icontag' => '',
+ 'captiontag' => '',
+ 'columns' => 3,
+ 'size' => 'thumbnail',
+ 'include' => '',
+ 'exclude' => '',
+ 'link' => ''
+ ], $attr));
+ $id = intval($id);
+ $columns = (12 % $columns == 0) ? $columns : 3;
+ $grid = sprintf('col-sm-%1$s col-lg-%1$s', 12 / $columns);
+ if ($order === 'RAND') {
+ $orderby = 'none';
+ }
+ if (!empty($include)) {
+ $_attachments = get_posts(['include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby]);
+ $attachments = [];
+ foreach ($_attachments as $key => $val) {
+ $attachments[$val->ID] = $_attachments[$key];
+ }
+ } elseif (!empty($exclude)) {
+ $attachments = get_children(['post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby]);
+ } else {
+ $attachments = get_children(['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;
+ }
+ $unique = (get_query_var('page')) ? $instance . '-p' . get_query_var('page') : $instance;
+ $output = '';
+ $i = 0;
+ foreach ($attachments as $id => $attachment) {
+ switch($link) {
+ case 'file':
+ $image = wp_get_attachment_link($id, $size, false, false);
+ break;
+ case 'none':
+ $image = wp_get_attachment_image($id, $size, false, ['class' => 'thumbnail img-thumbnail']);
+ break;
+ default:
+ $image = wp_get_attachment_link($id, $size, true, false);
+ break;
+ }
+ $output .= ($i % $columns == 0) ? '
' : '';
+ $output .= '
' . $image;
+ if (trim($attachment->post_excerpt)) {
+ $output .= '
' . wptexturize($attachment->post_excerpt) . '
';
+ }
+ $output .= '
';
+ $i++;
+ $output .= ($i % $columns == 0) ? '
' : '';
+ }
+ $output .= ($i % $columns != 0 ) ? '
' : '';
+ $output .= '';
+ return $output;
}
+add_shortcode('gallery', 'shortcode_gallery');
-// Apply filter to default gallery shortcode
-add_filter( 'post_gallery', 'bootstrap_wp_gallery', 10, 2 );
+/**
+ * Add class="thumbnail img-thumbnail" to attachment items
+ */
+function attachment_link_class($html) {
+ $html = str_replace('