Je souhaite ajouter une option aux "Paramètres de la galerie" (lorsque vous insérez une galerie dans un message).
Une fois, j'ai trouvé du code sur la façon de procéder, mais malheureusement, je ne le trouve plus. Je ne peux même pas me rappeler si c'était un crochet, mais je pense que c'était un truc hackish ;-)
THX
Merci à l'indice avec le plugin multiples galeries de Niall Campbell et à cette question Comment ajouter un Colum personnalisé sur l'onglet Galerie de Thickbox Media? (d'où j'ai tiré le hook admin_head-media-upload-popup
), j'ai pu terminer la tâche.
J'ai ajouté une option pour ajouter un attribut style
au shortcode de la galerie.
Voici le code complet:
add_action( 'admin_head-media-upload-popup', 'wpse_53803_script_enqueuer' );
function wpse_53803_script_enqueuer()
{
if( $_GET['tab'] == 'gallery' )
{
?>
<script type="text/javascript">
jQuery(document).ready( function($) {
// append the table row
$('#gallery-settings table#basic tbody').append('<tr><th scope="row" class="label"><label><span class="alignleft">Style:</span></label></th><td class="field"><select id="style" name="style"><option value="standard">Standard</option><option value="slideshow">Slideshow</option></select></td></tr>');
// set our vars
var $style = '', $is_update = false;
// Select parent editor, read existing gallery data
w = wpgallery.getWin();
editor = w.tinymce.EditorManager.activeEditor;
if (editor !== null) {
gal = editor.selection.getNode();
if (editor.dom.hasClass(gal, 'wpGallery')) {
$style = editor.dom.getAttrib(gal, 'title').match(/style=['"]([^'"]+)['"]/i);
var $is_update = true;
if ($style != null) {
$style = $style[1];
$('table#basic #style').find('option[value="' + $style + '"]').attr('selected','selected');
}
} else {
$('#insert-gallery').show();
$('#update-gallery').hide();
}
}
// remove standard onmousedown action
$('#insert-gallery').attr('onmousedown', '');
// Insert or update the actual shortcode
$('#update-gallery, #insert-gallery, #save-all').mousedown(function() {
var $styleAdd = '';
if (editor !== null)
var orig_gallery = editor.dom.decode(editor.dom.getAttrib(gal, 'title'));
else
var orig_gallery = '';
// Check which which style is selected
if($('table#basic #style').val() != 'standard') {
$styleAdd = ' style="slideshow"';
}
if ($(this).attr('id') == 'insert-gallery') {
w.send_to_editor('[gallery' + wpgallery.getSettings() + $styleAdd + ']');
}
// Update existing shortcode
if ($is_update) {
if ($styleAdd != '' && orig_gallery.indexOf(' style=') == -1)
editor.dom.setAttrib(gal, 'title', orig_gallery + $styleAdd);
else if (orig_gallery.indexOf(' style=') != -1)
editor.dom.setAttrib(gal, 'title', orig_gallery.replace(' style="slideshow"', $styleAdd));
else
editor.dom.setAttrib(gal, 'title', orig_gallery.replace(' style="slideshow"', ''));
}
});
});
</script>
<?php
}
}
Il ajoute style="slideshow"
si le style de diaporama est sélectionné, sinon il n’ajoute rien. Et il reconnaît le style défini si vous mettez à jour la galerie, de sorte que la bonne option soit sélectionnée.
Je vous remercie!
hmmm vérifie le code du plugin Mutliple Galleries, il utilise une solution de contournement javascript en raison de l'absence d'un hook wordpress pour la fonction media_upload_gallery_form (dans wp-admin/includes). Il envoie ensuite un code court de galerie modifié à l'éditeur (avec quelques attributs supplémentaires).
Si vous ajoutez des attributs supplémentaires qui ne sont pas couverts par le shortcode de la galerie, vous devrez écrire votre propre fonction, mais il y a beaucoup d'informations disponibles pour le faire, je ne vais donc pas en parler.