1

I quite like the default WordPress Gallery, but i dont like how it plonks the images as thumbnails, with a link to the larger image.

Is there anyway to make it display the images not in a thumbnail link, just as either the full size image or one chosen from the media uploader?

Also in a an li list?

So simply looks like the following..

<ul>
  <li><img src="wp-uploads/image.jpg" alt="image" /></li>
  <li><img src="wp-uploads/image.jpg" alt="image" /></li>
</ul>

Or no chance and tough, thats how the gallery works?

Thanks for any advice :)

1 Answer 1

2

Put this code in your functions.php and check.

function custom_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'    => 'li',
    'icontag'    => '',
    'captiontag' => '',
    'columns'    => 3,
    'size'       => 'full',
    '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}";

$gallery_div = '';
$size_class = sanitize_html_class( $size );
$gallery_div = "<ul id=\"$selector\" class=\"gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}\">";
$output = apply_filters( 'gallery_style', $gallery_div );

$i = 0;
foreach ( $attachments as $id => $attachment ) {
    $image = wp_get_attachment_image( $id, $size );

    $output .= "<{$itemtag} class=\"gallery-item\">";
    $output .= $image;
    if ( $captiontag && trim($attachment->post_excerpt) ) {
        $output .= "
            <{$captiontag} class=\"wp-caption-text gallery-caption\">
            " . wptexturize($attachment->post_excerpt) . "
            </{$captiontag}>";
    }
    $output .= "</{$itemtag}>";
}

$output .= "
    </ul>\n";

return $output;
}
add_filter('post_gallery', 'custom_gallery', 11, 2);

This will output the uploaded image as it is instead of the thumbnail in a list.

6
  • Wow thats awesome thanks! It still links to an image though, anyway to strip the link and put it all in a <ul> <li> list? Thanks for that so far though, brilliant!
    – Jezthomp
    Dec 2, 2011 at 11:32
  • Ok try the above edited code and let me know if it works for you. Dec 2, 2011 at 16:46
  • Thanks Josh, almost perfect.. Thats put it in a list without the link but its back to the 150 x150 thumbnail size? So a combination of the two would be perfect. The list is also <li class="gallery-item"> rather than class='gallery-item' Thank you again.. :)
    – Jezthomp
    Dec 3, 2011 at 9:50
  • Check the latest answer and let me know... Dec 3, 2011 at 10:22
  • How can i modify this code to link the images with bigger size? May 3, 2012 at 9:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.