Explorar o código

AltoFocus: Removes a custom flexslider_gallery shortcode in favor of a post_gallery filter that provides the same functionality; Helps pass wporg theme submission checks; See: #35

Allan Cole %!s(int64=7) %!d(string=hai) anos
pai
achega
6d101a115a

+ 5 - 7
altofocus/components/post/content-single.php

@@ -30,12 +30,10 @@
 	preg_match( '/' . $pattern . '/s', $content, $matches );
 	preg_match( '/' . $pattern . '/s', $content, $matches );
 
 
 	// Account for Content Option settings
 	// Account for Content Option settings
-	if ( ! function_exists( 'jetpack_featured_images_remove_post_thumbnail' ) ) {
+	if ( ! function_exists( 'jetpack_featured_images_remove_post_thumbnail' ) || ! empty ( get_option( 'jetpack_content_featured_images_post' ) ) ) {
 		$content_option_override = '1';
 		$content_option_override = '1';
-	} elseif ( empty ( get_option( 'jetpack_content_featured_images_post' ) ) ) {
-		$content_option_override = '0';
 	} else {
 	} else {
-		$content_option_override = '1';
+		$content_option_override = '0';
 	}
 	}
 
 
 	// If content has a gallery with the slideshow type, display that instead of the featured image.
 	// If content has a gallery with the slideshow type, display that instead of the featured image.
@@ -45,12 +43,12 @@
 
 
 			if ( is_array( $matches ) && $matches[2] == 'gallery' ) {
 			if ( is_array( $matches ) && $matches[2] == 'gallery' ) {
 
 
-				// Remove gallery markup from content (affects .entry-content below)
+				// Remove gallery markup from content (effects .entry-content below)
 				$content = altofocus_strip_override_shortcode( $content );
 				$content = altofocus_strip_override_shortcode( $content );
 
 
-				// Replace gallery with flexslider_gallery shortcode
+				// Filter default gallery with custom full-width flexslider gallery. See: extras.php
+				add_filter( 'post_gallery', 'altofocus_slideshow_gallery_filter', 10, 2);
 				$shortcode = $matches[0];
 				$shortcode = $matches[0];
-				$shortcode = preg_replace( '/\[' . $matches[2] . ' /', '[flexslider_gallery size="altofocus-post-featured-image" ', $shortcode, 1 );
 				$output = do_shortcode( $shortcode );
 				$output = do_shortcode( $shortcode );
 			}
 			}
 		}
 		}

+ 96 - 0
altofocus/inc/extras.php

@@ -128,3 +128,99 @@ function altofocus_pingback_header() {
 	}
 	}
 }
 }
 add_action( 'wp_head', 'altofocus_pingback_header' );
 add_action( 'wp_head', 'altofocus_pingback_header' );
+
+/**
+ * Slideshow Gallery Filter
+ *
+ * Replaces the default gallery when type=slideshow is used
+ * See: componenets/post/content-single.php
+ * Source: https://wordpress.stackexchange.com/a/64022
+ */
+function altofocus_slideshow_gallery_filter( $output, $attr ) {
+
+	global $post;
+
+	static $instance = 0;
+	$instance++;
+
+	// 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'      => 'ASC',
+		'orderby'    => 'menu_order ID',
+		'id'         => $post->ID,
+		'itemtag'    => 'li',
+		'icontag'    => null,
+		'captiontag' => 'p',
+		'columns'    => 3,
+		'size'       => 'large',
+		'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 '';
+	}
+
+	// The gallery output
+	$selector = "gallery-{$instance}";
+	$size_class = sanitize_html_class( $size );
+	$output = "<section id=\"gallery-{$id}\" class=\"entry-gallery\"><div id=\"$selector\" class=\"flexslider slider slider-size-{$size_class}\"><ul class=\"slides\">";
+	foreach ( $attachments as $att_id => $attachment ) {
+
+		// Get image, meta & caption
+		$image_link = wp_get_attachment_image( $att_id, $size );
+		$image_meta  = wp_get_attachment_metadata( $att_id );
+		$image_caption = $attachment->post_excerpt;
+
+		// Set orientation
+		$orientation = '';
+		if ( isset( $image_meta['height'], $image_meta['width'] ) )
+			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
+
+		// Image markup
+		$output .= "<{$itemtag} class=\"slide {$orientation}\">";
+		$output .= $image_link;
+
+		// Add caption if it exists
+		if ( ! empty( $image_caption ) )
+			$output .= '<span class="image-caption">' . $image_caption . '</span>';
+
+		$output .= "</{$itemtag}>";
+	}
+
+	$output .= '</section>';
+	return $output;
+}

+ 0 - 162
altofocus/inc/template-tags.php

@@ -7,168 +7,6 @@
  * @package AltoFocus
  * @package AltoFocus
  */
  */
 
 
-/*
- * Gallery Slider Shortcode
- */
-function altofocus_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( 'slider_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'      => 'ASC',
-		'orderby'    => 'menu_order ID',
-		'id'         => $post->ID,
-		'itemtag'    => 'li',
-		'icontag'    => null,
-		'captiontag' => 'p',
-		'columns'    => 3,
-		'size'       => 'large',
-		'include'    => '',
-		'exclude'    => ''
-	), $attr, 'gallery' ) );
-
-	$id = intval( $id );
-
-	if ( 'RAND' == $order )
-		$orderby = 'none';
-
-	if ( ! empty( $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 ) ) {
-
-		$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 );
-	$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 > 0 ? floor(100/$columns) : 100;
-	$float = is_rtl() ? 'right' : 'left';
-
-	$selector = "gallery-{$instance}";
-
-	$size_class = sanitize_html_class( $size );
-    $gallery_div = "<section id=\"gallery-{$id}\" class=\"entry-gallery\"><div id=\"$selector\" class=\"flexslider slider slider-size-{$size_class}\"><ul class=\"slides\">";
-    $output = $gallery_div;
-
-	$i = 0;
-
-	$attachment_id = ( empty( $attachment_id ) ) ? get_post_thumbnail_id() : (int) $attachment_id;
-
-	foreach ( $attachments as $id => $attachment ) {
-
-		// Get image, meta & caption
-		$image_link = wp_get_attachment_image( $id, $size );
-		$image_meta  = wp_get_attachment_metadata( $id );
-		$image_caption = $attachment->post_excerpt;
-
-		// Set orientation
-		$orientation = '';
-		if ( isset( $image_meta['height'], $image_meta['width'] ) )
-			$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
-
-		// Image markup
-		$output .= "<{$itemtag} class=\"slide {$orientation}\">";
-		$output .= $image_link;
-
-		// Add caption if it exists
-		if ( ! empty( $image_caption ) )
-			$output .= '<span class="image-caption">' . $image_caption . '</span>';
-
-		$output .= "</{$itemtag}>";
-	}
-
-    $output .= "</ul></div></section>\n";
-
-	return $output;
-
-}
-add_shortcode( 'flexslider_gallery', 'altofocus_gallery_shortcode' );
-
 if ( ! function_exists( 'altofocus_posted_on' ) ) :
 if ( ! function_exists( 'altofocus_posted_on' ) ) :
 /**
 /**
  * Prints HTML with meta information for the current post-date/time and author.
  * Prints HTML with meta information for the current post-date/time and author.