J'utilise le code suivant pour ouvrir un cadre de média lorsque je clique sur un lien doté d'un attribut data-attachment_id
. Cet attribut contient l'identifiant d'une pièce jointe que je veux sélectionner lorsque le cadre s'ouvre:
jQuery(document).ready(function($){
$( '#gallery_images_container' ).on( 'click', 'a.edit', function( event ) {
var $el = $( this );
var selected = $( this ).attr( 'data-attachment_id' );
event.preventDefault();
// If the media frame already exists, reopen it.
if ( gallery_items_frame ) {
// Select the attachment when the frame opens
gallery_items_frame.on( 'open', function() {
var selection = gallery_items_frame.state().get( 'selection' );
if ( selected ) {
selection.add( wp.media.attachment( selected ) );
}
});
// Open the modal.
gallery_items_frame.open();
return;
}
// Create the media frame.
gallery_items_frame = wp.media.frames.gallery_items = wp.media({
// Set the title of the modal.
title: $el.data( 'choose' ),
button: {
text: $el.data( 'update' )
},
states: [
new wp.media.controller.Library({
title: $el.data( 'choose' ),
filterable: 'all',
multiple: true
})
]
});
// Select the attachment when the frame opens
gallery_items_frame.on( 'open', function() {
var selection = gallery_items_frame.state().get( 'selection' );
if ( selected ) {
selection.add( wp.media.attachment( selected ) );
}
});
// Open the modal.
gallery_items_frame.open();
});
});
Lorsque je clique sur le lien pour la première fois, le cadre s'ouvre et la pièce jointe pertinente est sélectionnée. Mais si je ferme le cadre et que je clique à nouveau sur le lien, le cadre s'ouvre à nouveau mais aucune pièce jointe n'est sélectionnée.
Avez-vous des idées sur ce que je pourrais faire de mal?
Merci d'avance
Eh bien, j'ai trouvé la réponse moi-même. J'espère que ça aide les autres:
J'ai remplacé les deux instances de:
if ( selected ) {
selection.add( wp.media.attachment( selected ) );
}
avec:
selection.reset( selected ? [ wp.media.attachment( selected ) ] : [] );
Apparemment, la fonction reset()
peut être utilisée pour vider un tableau et y ajouter des éléments.