From cedd0cb7a72104f4f7117508199a3c9950fcb1e3 Mon Sep 17 00:00:00 2001
From: Paul Biron <paul@sparrowhawkcomputing.com>
Date: Mon, 16 Jul 2018 16:05:00 -0600
Subject: [PATCH] revised patch: 1) filter should accept an array (instead of
 string) for $classes; 2) filter return value cast to array() (just in case);
 3) sanitize_html_class() array_map'd to filter return value; 4)
 'gallery-item' added if not already present.

---
 src/wp-includes/media.php | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
index c93c3db..19c8d1a 100644
--- a/src/wp-includes/media.php
+++ b/src/wp-includes/media.php
@@ -1863,7 +1863,21 @@ function gallery_shortcode( $attr ) {
 		if ( isset( $image_meta['height'], $image_meta['width'] ) ) {
 			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
 		}
-		$output .= "<{$itemtag} class='gallery-item'>";
+
+		/**
+		 * Filter the gallery item classes.
+		 *
+		 * @since 5.0
+		 *
+		 * @param array $classes    Classes applied to gallery item.
+		 * @param object $attachment Attachment object.
+		 */
+		$gallery_item_classes = (array) apply_filters( 'gallery_item_classes', array(), $attachment );
+		$gallery_item_classes = array_filter( array_map( 'sanitize_html_class', $gallery_item_classes ) );
+		$gallery_item_classes = array_merge( array( 'gallery-item' ), $gallery_item_classes );
+		$gallery_item_classes = implode( ' ', $gallery_item_classes );
+
+		$output .= "<{$itemtag} class='{$gallery_item_classes}'>";
 		$output .= "
 			<{$icontag} class='gallery-icon {$orientation}'>
 				$image_output
-- 
2.7.0.windows.1

