web-dev-qa-db-fra.com

Modifier le tableau d'images sélectionnées en mode multimédia

Je crée un plug-in qui vérifie la présence d'éléments multimédias en double lors du téléchargement. Si un fichier est chargé et qu'il existe déjà dans la médiathèque, je propose à l'utilisateur de supprimer le fichier téléchargé et d'insérer le fichier existant à la place.

Dans la fenêtre multimédia modale (celle qui apparaît lorsque vous cliquez sur "Ajouter un média" au-dessus de l'éditeur de publication), tout fonctionne pour détecter le fichier en double et propose une case à cocher sur laquelle l'utilisateur peut cliquer pour supprimer le duplicata (via 'wp_ajax_save- pièce jointe '). Une fois que l'utilisateur a supprimé le nouveau fichier, je dois trouver un moyen de modifier le tableau JavaScript des éléments multimédias actuellement sélectionnés, afin de remplacer l'ID de publication du fichier supprimé par l'ID de publication du doublon. Lorsque l'utilisateur clique sur "Insérer Dans Post ", la bonne image sera insérée.

Voici le code de travail que j'utilise actuellement. Cela déclenche chaque fois qu'une nouvelle sélection est faite dans le mode multimédia par défaut.

( function( $ ) {

    var _AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
    wp.media.view.Settings.AttachmentDisplay = _AttachmentDisplay.extend({
        render: function() {
            _AttachmentDisplay.prototype.render.apply(this, arguments);
            selection = this.controller.state().get('selection').first().toJSON();
            //selection = this.controller.state().get('selection');

            filename = selection.filename;

            attachment = wp.media.attachment(id);  // get attachment with id

            console.dir(filename);
            console.dir(selection);
        }
    });

} )( jQuery );
3
bcorkins

Je suis capable de faire ce qui suit en média modal:

          var selection = wp.media.frame.state().get('selection'); // get selected collection
          attachment = wp.media.attachment(id);  // get attachment with id
          attachment.fetch();
          selection.add(attachment);  // add attachment to selection collection

Il devrait y avoir .remove() méthode ou quelque chose de similaire.

3
Dmitry Mukhin