web-dev-qa-db-fra.com

Comment spécifier une classe ajoutée à ma galerie

Je voudrais ajouter une classe à mon code abrégé de galerie, voici comment j'ai ajouté ma classe:

[gallery class="small" columns="2" ids="350,349,302,305"].

Maintenant que la confusion survient, je ne sais pas comment spécifier la classe dans mon css.

J'ai essayé:

.small .gallery 
.gallery-1 img 
.gallery
6
Charne

Voici trois méthodes

Approche n ° 1

Il est courant d'envelopper la sortie avec du code HTML personnalisé. Nous pouvons le faire en utilisant le filtre post_gallery et le callback gallery_shortcode():

/**
 * HTML Wrapper - Support for a custom class attribute in the native gallery shortcode
 */
add_filter( 'post_gallery', function( $html, $attr, $instance )
{
    if( isset( $attr['class'] ) && $class = $attr['class'] )
    {
        // Unset attribute to avoid infinite recursive loops
        unset( $attr['class'] ); 

        // Our custom HTML wrapper
        $html = sprintf( 
            '<div class="wpse-gallery-wrapper-%s">%s</div>',
            esc_attr( $class ),
            gallery_shortcode( $attr )
        );
    }

    return $html;

}, 10 ,3 );

Exemple:

Si nous définissons l'attribut class sur le shortcode de la galerie native sous la forme small :

[gallery class="small" columns="2" ids="350,349,302,305"].

alors la sortie HTML sera:

<div class="wpse-gallery-wrapper-small">
    <!-- The default gallery HTML output comes here -->
</div>

où nous pouvons maintenant le cibler avec le sélecteur de classe .wpse-gallery-wrapper-small.

Approche # 2

Une autre approche consisterait à modifier l'attribut de classe actuel à l'aide de quelques remplacements de chaîne. Utilisons les filtres post_gallery et gallery_style ensemble:

/**
 * HTML Replacement - Support for a custom class attribute in the native gallery shortcode
 */
add_filter( 'post_gallery', function( $html, $attr, $instance )
{
    add_filter( 'gallery_style', function( $html ) use ( $attr )
    {
        if( isset( $attr['class'] ) && $class = $attr['class'] )
        {
            unset( $attr['class'] );

            // Modify & replace the current class attribute
            $html = str_replace( 
                "class='gallery ",
                sprintf( 
                    "class='gallery wpse-gallery-%s ",
                    esc_attr( $class )
                ),
                $html
            );
        }
        return $html;
    } );

    return $html;
}, 10 ,3 );

Exemple:

En utilisant ce shortcode:

[gallery class="small" columns="2" ids="350,349,302,305"].

donnera le résultat HTML suivant:

<style>...</style>

<div id="gallery-1" class='gallery wpse-gallery-small ... '> ... </div>

où le sélecteur de classe est .wpse-gallery-wrapper-small.

Approche # 3

Utilisez le sélecteur d'identifiant par défaut pour l'instance de galerie.

id='gallery-1' 

ou les sélecteurs de classe par défaut:

class='gallery galleryid-123 gallery-columns-3 gallery-size-thumbnail'

123 est l'identifiant de la publication actuelle.

11
birgire