2010-12-02 23 views
7

Estoy usando este código para tener una galería sencilla en la página:Excluir the_post_thumbnail de la galería código corto

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

El problema ahora es que el usuario final tiene que subir una imagen a través de la página de los medios de comunicación antes de seleccionar esta imagen como imagen destacada.

Sé que esto podría resolverse agregando el ID de la imagen mostrada a la lista de exclusiones del shortcode, pero ¿cómo obtener esta identificación automáticamente?

Respuesta

15
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); 
+0

Al principio pensé que funcionaba como un amuleto, pero descubrí que excluía todas mis imágenes y devuelve un valor 'Array'. – Ewald

+0

Malo: he leído por completo el filtro en 'gallery_shortcode()' - ¡revise la respuesta revisada! – TheDeadMedic

+0

impresionante. gracias – Ewald

3
<?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" ]'); ?> 
+0

Muy útil si quieres agregar automáticamente una galería a cada publicación. ¡Gracias! –

+0

Ah, y no use $ id como variable de temperatura, obtendrá errores extraños. $ thumbnail_id debería ser seguro. –

1

¿Qué tal?

echo do_shortcode('[gallery exclude="' . get_post_thumbnail_id($post->ID) . '"]'); 
Cuestiones relacionadas