Исключение миниатюры поста из стандартной галереи


При выводе галереи изображений, присоединенных к посту, шорткодом , в эту галерею попадает и изображение, являющееся миниатюрой поста. Однако если миниатюра поста уже выводится в начале записи, то смысла выводить ее еще раз нет. Поэтому не лишним будет способ исключения миниатюры поста из галереи. Вставляем в файл functions.php:

function exclude_thumbnail_from_gallery($null, $attr)
{
    if (!$thumbnail_ID = get_post_thumbnail_id())
        return $null;

    remove_filter('post_gallery', 'exclude_thumbnail_from_gallery');

    if (!isset($attr['exclude']) || empty($attr['exclude']))
        $attr['exclude'] = array($thumbnail_ID);
    elseif (is_array($attr['exclude']))
        $attr['exclude'][] = $thumbnail_ID;

    $gallery = gallery_shortcode($attr);

    add_filter('post_gallery', 'exclude_thumbnail_from_gallery', 10, 2);

    return $gallery;
}
add_filter('post_gallery', 'exclude_thumbnail_from_gallery', 10, 2);

Теперь миниатюра поста всегда будет исключаться из галереи.

Есть способ и более простой, он подходит тем, кто автоматически выводит галерею изображений, встроив функцию вывода в файл single.php. В этом случае чтобы исключить миниатюру из галереи, в файле single.php нужно использовать:

<?php echo do_shortcode('[ gallery exclude="' . get_post_thumbnail_id( $post->ID ) . '"]'); ?>

источник

ПОЛЕЗНО  php: strlen и utf-8