Eu adicionei ao pop-up normal da galeria WordPress (ao clicar em "Adicionar mídia" no editor do WordPress), para permitir que meu tipo de galeria personalizado seja selecionado (o que interage com / usa o shortcode da galeria principal do WordPress).
Eu posso selecionar meus tipos de galeria personalizados (eu tenho dois) ou "Nativo" (que é a galeria normal do WordPress).
Atualmente, tudo funciona como planejado para a criação de uma galeria (se um tipo de galeria não nativo for escolhido, o tipo de galeria será adicionado ao código de acesso enviado ao editor, além de algumas outras opções que o meu não usa a galeria nativa).
No entanto, a questão é que, ao querer editar uma galeria que já criei, o menu suspenso que usaria para selecionar o tipo de galeria (nativo ou personalizado) 'congela' - ou seja, clicar nela revela todas as opções , mas selecionar uma opção diferente da originalmente escolhida não faz nada, e ela volta para a opção original.
Aqui está o meu código abaixo:
<script type="text/html" id="tmpl-mygallery-gallery-type">
<label class="setting">
<span><?php _e('Gallery type'); ?></span>
<select data-setting="gallerytype">
<option value="native" <# if ( 'native' == wp.media.gallery.defaults.gallerytype ) { #>selected="selected"<# } #>> WordPress Native </option>
<option value="mygallery_slide" <# if ( 'mygallery_slide' == wp.media.gallery.defaults.gallerytype ) { #>selected="selected"<# } #>> On-page slide </option>
<option value="mygallery_fade" <# if ( 'mygallery_fade' == wp.media.gallery.defaults.gallerytype ) { #>selected="selected"<# } #>> On-page fade </option>
</select>
</label>
<label class="setting" style="display: none;">
<input data-setting="slidenumbers" value="<?php echo $this->mygallery_saved_settings['numslides']; ?>" type="hidden" />
</label>
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
var mygallery_options = {
slidenumbers: '<?php echo $this->mygallery_saved_settings['numslides']; ?>',
slidespeed: '<?php echo $this->mygallery_saved_settings['thespeed']; ?>',
slidetitles: '<?php echo $this->mygallery_saved_settings['thetitles']; ?>',
slidesize: '<?php echo $this->mygallery_saved_settings['thesize']; ?>',
};
var the_defaults = {
gallerytype: 'native'
};
jQuery.extend(the_defaults, mygallery_options);
_.extend(wp.media.gallery, {
defaults: the_defaults,
setDefaults: function(attrs) {
var self = this;
// Remove default attributes from the shortcode, unless DeLight
_.each(this.defaults, function(value, key) {
attrs[key] = self.coerce(attrs, key);
if (value === attrs[key]) {
delete attrs[key];
}
});
if ('gallerytype' in attrs) {
jQuery.extend(attrs, mygallery_options);
}
return attrs;
},
});
//Extend media gallery
wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
events: function(args) {
var the_events = {};
//NEED TO GET STATE (ie, 'creating gallery for first time' rather than 'edit gallery'....
var is_create_gallery = true;
//IF WE'RE EDITING, SET IT TO FALSE
//if(editing??) > is_create_gallery = false;
if (is_create_gallery) {
_.extend( the_events, { 'change select[data-setting="gallerytype"]' : 'gallerytypechanged' } );
}
return the_events;
},
gallerytypechanged: function( e ){
e.preventDefault();
var self = this;
var gallery_type = jQuery( e.currentTarget ).val();
if( gallery_type != 'native' ){
var parent_container = jQuery(self.$el);
var gallery_size = jQuery(parent_container).find('select[data-setting="size"]');
var gallery_link = jQuery(parent_container).find('select[data-setting="link"]');
//Set vars for DeLight selection
jQuery( gallery_size ).val('thumbnail');
jQuery( gallery_link ).val('none');
//Update vars so the editor thinks they were clicked
self.update.apply( self, ['size'] );
self.update.apply( self, ['link'] );
self.update.apply( self, ['gallerytype'] );
self.update.apply( self, ['slidenumbers'] );
self.update.apply( self, ['slidespeed'] );
self.update.apply( self, ['slidetitles'] );
self.update.apply( self, ['slidesize'] );
}
return self;
},
template: function(view) {
return wp.media.template('gallery-settings')(view) + wp.media.template('mygallery-gallery-type')(view);
},
});
});
</script>
Qualquer sugestão sobre como corrigir este comportamento seria muito apreciada!
Quando eu comento a linha 'self.update.apply (self, [' gallerytype ']);' , funciona ao editar, mas ao criar do zero, não envia minhas configurações personalizadas para o shortcode no editor. Quando eu deixo a linha, o Create funciona, mas o comportamento do dropdown de voltar para o valor original ocorre.
Obrigado!