WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to use built-in WP media gallery. I'm trying to simply add images in one - horizontal line. I want images with original size and without any link. I'm trying to add/edit some code into wp-admin/includes/media.php but I can't get it ;/ I know I have to use size="full" and columns="0" but how to add this with shortcode as default? And I have no idea how to get rid of links under images? Am I looking in good file? If no - point me to right direction please ;)

share|improve this question
up vote 1 down vote accepted


I've just submitted a core patch to add link="none" support to the [gallery] shortcode.


You don't need to hack core to do what you want to do; just use the appropriate [gallery] shortcode parameters, e.g.:

[gallery columns="0" size="full"]

If you want to change the defaults, then use the post_gallery filter:

function mytheme_gallery_shortcode_defaults( $output, $attr ) {
    global $post;
    $attr = array(
        'columns' => '0',
        'size' => 'full'
    return $output;
add_filter( 'post_gallery', 'mytheme_gallery_shortcode_defaults', 10, 2 );

The only way to remove the link is to clear the image link field in the Media Library, or you can do some involved code replacement.


I'm somewhat guessing here, as I'm not fully familiar with filtering the gallery output. I've made a couple of modifications, including passing both variables to the callback, correcting the add_filter() call to accommodate both variables, and returning $output rather than $attr.


Okay, so it looks like, currently, the only way to override th shortcode attributes is to rewrite the entire walker. See this Trac Ticket for details.

So, basically, this:

function mytheme_gallery_shortcode( $output, $attr ) {
    global $post, $wp_locale;

    static $instance = 0;

    // Allow plugins/themes to override the default gallery template.
    $output = apply_filters('post_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'] );

        'order'      => 'ASC',
        'orderby'    => 'menu_order ID',
        'id'         => $post->ID,
        'itemtag'    => 'dl',
        'icontag'    => 'dt',
        'captiontag' => 'dd',
        'columns'    => 0,
        'size'       => 'full',
        'include'    => '',
        'exclude'    => '',
                'link'       => 'none'
    ), $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_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 -->";
    $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 ) {
                $image = wp_get_attachment_image( $id, $size, false );
        $link = isset($attr['link']) && 'file' == $attr['link'] ? wp_get_attachment_link($id, $size, false, false) : wp_get_attachment_link($id, $size, true, false);
                $image_output = ( 'none' == $attr['link'] ? $image : $link );

        $output .= "<{$itemtag} class='gallery-item'>";
        $output .= "
            <{$icontag} class='gallery-icon'>
        if ( $captiontag && trim($attachment->post_excerpt) ) {
            $output .= "
                <{$captiontag} class='wp-caption-text gallery-caption'>
                " . wptexturize($attachment->post_excerpt) . "
        $output .= "</{$itemtag}>";
        if ( $columns > 0 && ++$i % $columns == 0 )
            $output .= '<br style="clear: both" />';

    $output .= "
            <br style='clear: both;' />

    return $output;
add_filter( 'post_gallery', 'mytheme_gallery_shortcode', 10, 2 );
share|improve this answer
I've tried your code and it gives just test "array". When I use code from link You provided then I have large images as I want 2 but there is still no option for adding images without a href – smogg Jul 19 '11 at 18:42
Okay, see updated answer. You basically will have to rewrite the entire gallery walker. – Chip Bennett Jul 19 '11 at 19:24
I've tried already to overwrite whole function, but when I try to do this then I cant load page at all (browser displays disconnection error) and I have no idea what is that? I've also tried solution from Mattsatorious Blog with 'link' => 'none' but without any effect. – smogg Jul 19 '11 at 19:37
"I've tried already to overwrite whole function, but when I try to do this then I cant load page at all (browser displays disconnection error)" - Then you've done something wrong with your callback function, or your add_filer() call. Check for syntax errors, and make sure you're returning the appropriate variable. – Chip Bennett Jul 19 '11 at 19:40
Going a different route: patching core – Chip Bennett Jul 19 '11 at 20:07


  1. Do not hack core files.
  2. The full size image is an option by default, you can change it under Settings-->Media
  3. To remove the link just delete the field that says "Link URL".
share|improve this answer
How exactly can I remove this field without hacking core files? – smogg Jul 19 '11 at 18:13
[gallery link="file" order="DESC" columns="1" size="full"]

Use Gallery shortcode.

you can set it to "file" so each image will link to the image file. The default value links to the attachment's permalink.

comma separated attachment IDs, [gallery include="23,39,45"] will show only the images from these attachments.

comma separated attachment IDs, [gallery exclude="21,32,43"] excludes the images from these attachments. Please note that include and exclude cannot be used together.

share|improve this answer

Insert your photo, click on the image, click on the photo (Edit image) icon that appears on top of your photo, then when the EDIT PHOTO box opens, scroll down and click NONE under the link photo option.

Hope this helps.

share|improve this answer

Alternate approach: use the Cleaner Gallery Plugin.

share|improve this answer
Plugin seems to be the best solution, but still doesn't have option to display full images. Also it doesn't make thumbnails but attach width and height style to the full image... How can I remove this styles? – smogg Jul 20 '11 at 10:30

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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