it-swarm.dev

So geben Sie eine Klasse an, die zu meiner Galerie hinzugefügt wurde

Ich möchte meiner Galerie eine Klasse hinzufügen. So habe ich meine Klasse hinzugefügt:

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

Jetzt kommt die Verwirrung herein, ich bin nicht sicher, wie ich die Klasse in meinem CSS spezifizieren soll.

Ich habe versucht:

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

Hier sind drei Methoden

Ansatz Nr. 1

Es ist üblich, die Ausgabe mit benutzerdefiniertem HTML zu verpacken. Wir können das tun, indem wir den post_gallery Filter und den gallery_shortcode() Callback benutzen:

/**
 * 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 );

Beispiel:

Wenn wir das Attribut class auf den Shortcode der nativen Galerie als small setzen:

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

dann ist die HTML-Ausgabe:

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

wo wir es jetzt mit dem Klassen-Selektor .wpse-gallery-wrapper-small ausrichten können.

Ansatz 2

Ein anderer Ansatz wäre, das aktuelle Klassenattribut mithilfe einiger Zeichenfolgenersetzungen zu ändern. Lassen Sie uns die Filter post_gallery und gallery_style zusammen verwenden:

/**
 * 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 );

Beispiel:

Verwenden Sie diesen Shortcode:

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

gibt die folgende HTML-Ausgabe aus:

<style>...</style>

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

wobei der Klassenselektor .wpse-gallery-wrapper-small ist.

Ansatz 3

Verwenden Sie den Standard-ID-Selektor für die Galerieinstanz.

id='gallery-1' 

oder die Standardklassenselektoren:

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

dabei ist 123 die aktuelle Beitrags-ID.

11
birgire