This commit is contained in:
Thomas Guillot 2018-03-09 12:32:08 +00:00
commit ce4d9e4f37
7 changed files with 105 additions and 173 deletions

View file

@ -30,12 +30,10 @@
preg_match( '/' . $pattern . '/s', $content, $matches );
// 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';
} elseif ( empty ( get_option( 'jetpack_content_featured_images_post' ) ) ) {
$content_option_override = '0';
} 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.
@ -45,12 +43,12 @@
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 );
// 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 = preg_replace( '/\[' . $matches[2] . ' /', '[flexslider_gallery size="altofocus-post-featured-image" ', $shortcode, 1 );
$output = do_shortcode( $shortcode );
}
}

View file

@ -128,3 +128,99 @@ function 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;
}

View file

@ -171,7 +171,7 @@ function altofocus_infinite_scroll_render() {
}
} ?>
<script>
// Put returned posts IDs in to an array
// Put returned posts' IDs in to an array
var loadedPosts = <?php echo json_encode( $loaded_post_IDs ); ?>;
</script>
<?php

View file

@ -7,168 +7,6 @@
* @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' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.

View file

@ -65,7 +65,7 @@ add_color_rule( 'bg', '#ffffff', array(
array( '.comments-link .comment-icon .path,
.post-navigation-fixed .nav-links a .meta-nav .arrow-icon .circle', 'fill' ),
), __( 'Background Color' ) );
), __( 'Background Color', 'altofocus' ) );

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

After

Width:  |  Height:  |  Size: 493 KiB

View file

@ -2,13 +2,13 @@
Theme Name: AltoFocus
Theme URI: https://wordpress.com/themes/altofocus/
Description: AltoFocus is a theme for photographers, artists, and other creative types in search of a simple and easy way to display their work.
Version: 1.0.2-wpcom
Version: 1.0.4-wpcom
Author: Automattic, Inc
Author URI: http://automattic.com
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: altofocus
Tags: art, artwork, clean, featured-images, full-width-template, grid-layout, infinite-scroll, minimal, one-column, photoblogging, photography, portfolio, responsive-layout, rtl-language-support, site-logo, theme-options, translation-ready
Tags: featured-images, full-width-template, grid-layout, one-column, portfolio, rtl-language-support, theme-options, translation-ready
This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned with others.