Support » Plugins » Carousel not working with post_gallery filter

  • Resolved andywar65

    (@andywar65)



    In a child theme I’m working on, I hooked the post_gallery filter to change how galleries appeared by default. By result, Jetpack Carousel won’t even start. It depends on the function, because when I dismiss it Carousel works again. In this website I left the function so you can see: http://www.andywar.net/runningcomics/
    Below is function:

    <?php
    function andywar_gallery_shortcode($empty , $attr) {
    
    // 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 ? $post->ID : 0,
    'itemtag'    => 'dl',
    'icontag'    => 'dt',
    'captiontag' => 'dd',
    'columns'    => 2,
    'size'       => 'medium',
    'include'    => '',
    'exclude'    => '',
    'link'       => ''
    ), $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}";
    
    $gallery_style = $gallery_div = '';
    if ( apply_filters( 'use_default_gallery_style', true ) )
    $gallery_style = "
    <style type='text/css'>
    #{$selector} {
    margin: auto;
    }
    #{$selector} .gallery-item {
    float: {$float};
    margin-top: 10px;
    text-align: center;
    width: {$itemwidth}%;
    }
    #{$selector} img {
    border: 2px solid #cfcfcf;
    }
    #{$selector} .gallery-caption {
    margin-left: 0;
    }
    /* see gallery_shortcode() in wp-includes/media.php */
    </style>";
    $size_class = sanitize_html_class( $size );
    $gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
    $output = apply_filters( 'gallery_style', $gallery_style . "\n\t\t" . $gallery_div );
    
    $i = 0;
    foreach ( $attachments as $id => $attachment ) {
    if ( ! empty( $link ) && 'file' === $link )
    $image_output = wp_get_attachment_link( $id, $size, false, false );
    elseif ( ! empty( $link ) && 'none' === $link )
    $image_output = wp_get_attachment_image( $id, $size, false );
    else
    $image_output = wp_get_attachment_link( $id, $size, true, false );
    
    $image_meta  = wp_get_attachment_metadata( $id );
    
    $orientation = '';
    if ( isset( $image_meta['height'], $image_meta['width'] ) )
    $orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
    
    $output .= "<{$itemtag} class='gallery-item'>";
    $output .= "
    <{$icontag} class='gallery-icon {$orientation}'>
    $image_output
    </{$icontag}>";
    if ( $captiontag && trim($attachment->post_excerpt) ) {
    $output .= "
    <{$captiontag} class='wp-caption-text gallery-caption'>
    " . wptexturize($attachment->post_excerpt) . "
    </{$captiontag}>";
    }
    $output .= "</{$itemtag}>";
    if ( $columns > 0 && ++$i % $columns == 0 )
    $output .= '<br style="clear: both" />';
    }
    
    $output .= "
    <br style='clear: both;' />
    </div>\n";
    
    return $output;
    }
    
    add_filter('post_gallery' , 'andywar_gallery_shortcode' , 10 , 2);
    ?>

Viewing 1 replies (of 1 total)
  • Excuse me, but the answer is on the jetpack website:

    Questions & Answers
    Carousel is active but is not launching for my galleries. What’s up?
    Please verify if your theme has some custom gallery functionalities. The Carousel will deactivate if it detects that the theme in use is overwriting the gallery shortcode, so as to not conflict with the theme.

    Thanks the same…

Viewing 1 replies (of 1 total)
  • The topic ‘Carousel not working with post_gallery filter’ is closed to new replies.