J'aimerais ajouter une option personnalisée à l'onglet par défaut de la galerie wordpress. J'ai besoin de quelque chose de simple, juste un menu déroulant pour ajouter un style, cela ajouterait une classe prédéfinie à la galerie côté client et en mode édition dans la partie admin.
Est-il possible de le faire sans pirater le code wordpress.
J'ai vu un article ici: Ajout d'une option à la section "Paramètres de la Galerie" qui montre comment faire ce que je veux mais je l'ai essayé et cela ne fonctionne pas, je suppose que c'est parce que l'exemple concerne ~ 3.5 J'utilise la version 4.1.1. Comment puis-je faire cela avec ma version actuelle?.
WordPress ne rend pas très facile la modification d'aspects du shortcode gallery . Quelques attributions:
L’autre option à part birgires (pour autant que je sache) est de reconstruire le shortcode en copiant le code existant dans les cœurs media.php file , ce qui est pénible.
Quelques remarques sur la fonction additional_gallery_settings()
initiale, à partir de peterbra :
tmpl-
est requis.data-setting
Il suffit de jeter le code suivant dans votre fichier functions.php
:
/**
* Set up the new field in the media module.
*
* @return void
*/
function additional_gallery_settings() {
?>
<script type="text/html" id="tmpl-custom-gallery-setting">
<span>Style</span>
<select data-setting="style">
<option value="default-style">Default Style</option>
<option value="custom-style">Custom Style</option>
<option value="ie7-style">IE7 Style</option>
</select>
</script>
<script type="text/javascript">
jQuery( document ).ready( function() {
_.extend( wp.media.gallery.defaults, {
style: 'default-style'
} );
wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend( {
template: function( view ) {
return wp.media.template( 'gallery-settings' )( view )
+ wp.media.template( 'custom-gallery-setting' )( view );
}
} );
} );
</script>
<?php
}
add_action( 'print_media_templates', 'additional_gallery_settings' );
/**
* HTML Wrapper - Support for a custom class attribute in the native gallery shortcode
*
* @param string $html
* @param array $attr
* @param int $instance
*
* @return $html
*/
function customize_gallery_abit( $html, $attr, $instance ) {
if( isset( $attr['style'] ) && $style = $attr['style'] ) {
// Unset attribute to avoid infinite recursive loops
unset( $attr['style'] );
// Our custom HTML wrapper
$html = sprintf(
'<div class="wpse-gallery-wrapper-%s">%s</div>',
esc_attr( $style ),
gallery_shortcode( $attr )
);
}
return $html;
}
add_filter( 'post_gallery', 'customize_gallery_abit', 10, 3 );