Help with WP gallery function, wrap gallery in div

I have a function in my functions.php file I need to change slightly and am having trouble doing it correctly. This function changes the gallery markup for WordPress, making it more html5 friendly. It works fine as is, except that I’d like to wrap the entire gallery in a div, for example <div id="sort">. (I want to wrap the gallery, not the entire post.)

I’m having trouble figuring out how to add that to this function:

//Gallery Code Filter
add_filter( 'post_gallery', 'my_post_gallery', 10, 2 );
function my_post_gallery( $output, $attr) {
    global $post, $wp_locale;
    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'    => 'figure',
        'icontag'    => 'dt',
        'captiontag' => 'figcaption',
        'columns'    => 3,
        'size'       => 'thumbnail',
        'attachment' => '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 '';
    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);
    $columns = intval($columns);
    $itemwidth = $columns > 0 ? floor(100/$columns) : 100;
    $float = is_rtl() ? 'right' : 'left';
    $selector = "gallery-{$instance}";
    $output = apply_filters('gallery_style', "");
    $i = 0;
    foreach ( $attachments as $id => $attachment ) {
        $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
        $output .= "<{$itemtag} class='item'>";
        $output .= "            
                $link
            ";
        if ( $captiontag && trim($attachment->post_excerpt) ) {
            $output .= "
                <{$captiontag}>
                " . wptexturize($attachment->post_excerpt) . "
                </{$captiontag}>";
        }
        $output .= "</{$itemtag}>";
        if ( $columns > 0 && ++$i % $columns == 0 )
            $output .= '';
    }
    $output .= "
            <br>n";
    return $output;
}

Related posts

1 comment

  1. I just added a div to your function see comment in code:

    <?php 
    
    add_filter( 'post_gallery', 'my_post_gallery', 10, 2 );
    function my_post_gallery( $output, $attr ) 
    {
        global $post, $wp_locale;
        static $instance = 0;
    
        $instance ++;
    
        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'    => 'figure',
            'icontag'    => 'dt',
            'captiontag' => 'figcaption',
            'columns'    => 3,
            'size'       => 'thumbnail',
            'attachment' => '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;
        }
    
        if( is_feed() ) 
        {
            $output = '';
            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 );
        $columns    = intval( $columns );
        $itemwidth  = $columns > 0 ? floor( 100 / $columns ) : 100;
        $float      = is_rtl() ? 'right' : 'left';
        $selector   = "gallery-{$instance}";
        $output     = apply_filters( 'gallery_style', '' );
        $i          = 0;
    
        // The div
        $output .= '<div id="sort">';
    
            foreach( $attachments as $id => $attachment ) 
            {
                $link = isset( $attr['link'] ) && 'file' == $attr['link'] ? wp_get_attachment_link( $id, $size, false, false ) : wp_get_attachment_link( $id, $size, true, false );
    
                $output .= "<{$itemtag} class='item'>";
                $output .= "$link";
    
                if ( $captiontag && trim( $attachment->post_excerpt ) ) 
                {
                    $output .= "<{$captiontag}>" . wptexturize( $attachment->post_excerpt ) . "</{$captiontag}>";
                }
                $output .= "</{$itemtag}>";
    
                if ( $columns > 0 && ++$i % $columns == 0 )
                {
                    $output .= '';
                }
            }
    
            $output .= "<br>n";
    
        // End div
        $output .= '</div>';
    
        return $output;
    }
    

Comments are closed.