Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exclude the_post_thumbnail from gallery shortcode

I am using this code to have a simple gallery on the page:

<?php echo do_shortcode('[gallery itemtag="ul" icontag="li" size="full" columns="0" link="file" ]'); ?>

The problem now is that the end-user has to upload an image via the Media page before selecting this image as featured image.

I know this could be solved by adding the featured image's ID to the shortcode's exclude list, but how to get this ID automatically?

like image 991
Ewald Avatar asked Dec 02 '10 17:12

Ewald


3 Answers

function exclude_thumbnail_from_gallery($null, $attr)
{
    if (!$thumbnail_ID = get_post_thumbnail_id())
        return $null; // no point carrying on if no thumbnail ID

    // temporarily remove the filter, otherwise endless loop!
    remove_filter('post_gallery', 'exclude_thumbnail_from_gallery');

    // pop in our excluded thumbnail
    if (!isset($attr['exclude']) || empty($attr['exclude']))
        $attr['exclude'] = array($thumbnail_ID);
    elseif (is_array($attr['exclude']))
        $attr['exclude'][] = $thumbnail_ID;

    // now manually invoke the shortcode handler
    $gallery = gallery_shortcode($attr);

    // add the filter back
    add_filter('post_gallery', 'exclude_thumbnail_from_gallery', 10, 2);

    // return output to the calling instance of gallery_shortcode()
    return $gallery;
}
add_filter('post_gallery', 'exclude_thumbnail_from_gallery', 10, 2);
like image 193
TheDeadMedic Avatar answered Oct 26 '22 05:10

TheDeadMedic


<?php  $id = get_post_thumbnail_id(get_the_ID()); // gets the post thumbnail ID ?>
<?php echo do_shortcode('[gallery exclude='.$id.' link="file" itemtag="div" icontag="span" captiontag="p" size="thumbnail" columns="4" ]'); ?> 
like image 26
zean Avatar answered Oct 26 '22 07:10

zean


How about?

echo do_shortcode('[gallery exclude="' . get_post_thumbnail_id( $post->ID ) . '"]');
like image 1
Scriptamateur Avatar answered Oct 26 '22 06:10

Scriptamateur