Исключить the_post_thumbnail из шорткода галереи - PullRequest
7 голосов
/ 02 декабря 2010

Я использую этот код для простой галереи на странице:

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

Теперь проблема заключается в том, что конечный пользователь должен загрузить изображение через страницу «Медиа», прежде чем выбрать это изображение в качестве избранного.

Я знаю, что это можно решить, добавив идентификатор избранного изображения в список исключений шорткода, но как получить этот идентификатор автоматически?

Ответы [ 3 ]

15 голосов
/ 03 декабря 2010
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);
3 голосов
/ 27 апреля 2011
<?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" ]'); ?> 
1 голос
/ 16 февраля 2012

Как насчет?

echo do_shortcode('[gallery exclude="' . get_post_thumbnail_id( $post->ID ) . '"]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...