From 28ec00cf452d38e270ba6f1ce88a9591550aebbe Mon Sep 17 00:00:00 2001 From: Grzegorz Witczak Date: Thu, 22 Sep 2016 11:25:47 +0200 Subject: [PATCH] Fix gallery shortcode --- inc/bootstrap-wp-gallery.php | 224 ++++++++++++++++------------------- 1 file changed, 100 insertions(+), 124 deletions(-) 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', " - - \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 = '' : ''; + $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('