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
Voici trois méthodes
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
.
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
.
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'
où 123
est l'identifiant de la publication actuelle.