Vraag Selecteer afbeeldingen vooraf bij het openen van WordPress 3.5 media manager


Ik heb gespeeld met de nieuwe mediabeheerder in WordPress en heb er lol in gehad, maar ben op het punt gekomen dat ik met mijn hoofd tegen een muur stoot.

Ik heb een aangepaste metabox waar ik een aantal afbeeldingen in wil opslaan (het is een verborgen invoer en ik bewaar momenteel hun ID's, maar kunnen ook de afbeeldingsobjecten zijn), en vervolgens een AJAX-aanroep doen om enkele miniaturen weer te geven, die ik vervolgens draggable heb gemaakt, zodat gebruikers kunnen herordenen (niet noodzakelijkerwijs alleen op een achtergrond).

Mijn probleem is dat wanneer ik de mediabeheerder open, er geen afbeeldingen worden geselecteerd, dus als een gebruiker de afbeeldingen in zijn galerij wil bewerken, moeten ze ze allemaal opnieuw selecteren.

Wat ik probeer te achterhalen, is hoe ik de mediabeheerder openzet met de huidige afbeeldingen die zijn gepasseerd, zodat ze vooraf zijn geselecteerd.

Dus, in grote lijnen, ziet mijn code er zo uit

jQuery('#myButton').click(function(e) {
  e.preventDefault();
  frame = wp.media({
    title : 'My Gallery Title',
    multiple : true,
    library : { type : 'image'},
    button : { text : 'Insert' },
  });
  frame.on('close',function() {
    // get selections and save to hidden input plus other AJAX stuff etc.
  }
  frame.open();
});

Mijn idee is dat er een parameter moet zijn om in het frame te passen (waarschijnlijk een JSON-object van de afbeeldingen, of ik moet een gebeurtenis maken voor

frame.on('open', function() {
  // Set selected images
}

Maar ik heb beide kanten op geprobeerd en kom nergens.

Het lijkt mogelijk, omdat het wijzigen van de 'Uitgelichte afbeelding' je naar de bibliotheek brengt met de geselecteerde afbeelding - ik heb de kerncode zojuist nog niet voldoende begrepen en hoop dat iemand anders het heeft!


24
2017-12-18 15:22


oorsprong


antwoorden:


Na een tijdje de kern te hebben bestudeerd, is het antwoord hier eigenlijk vrij eenvoudig.

Luister naar het open evenement, pak de status, maak attachment-objecten met je id's en voeg ze toe aan de selectie.

frame.on('open',function() {
  var selection = frame.state().get('selection');
  ids = jQuery('#my_field_id').val().split(',');
    ids.forEach(function(id) {
  attachment = wp.media.attachment(id);
  attachment.fetch();
  selection.add( attachment ? [ attachment ] : [] );
});
});

Dit werkt bij het selecteren van meerdere afbeeldingen en enkel en gaat ervan uit dat met behulp van de bovenstaande code de waarden zijn opgeslagen in een enkel tekst / verborgen veld met komma-scheiding.


36
2017-12-20 00:11



geen echt antwoord, maar iets dat ik heb opgemerkt

met behulp van uw code de frame.open( console.log('open') ) activeert de console.log.
De andere frame.on('open', function() { console.log('on->open')}) doet niet.

Bij het bekijken van de pagina voor het bewerken van berichten. (Waar een aanbevolen afbeelding al is ingesteld). Als je het featured img-venster opent, gebeuren er een paar dingen die interessant zijn.

  1. WP doet 3 ajax-oproepen, de eerste en de derde bevatten de gekenmerkte img-id. de 2e is hetzelfde als met uw code.

  2. wanneer de pop-up is geladen, is de afgebeelde afbeelding zichtbaar / geladen voor de rest van de afbeeldingen. Wanneer deze worden weergegeven, wordt de afgebeelde afbeelding in de juiste volgorde geplaatst.

  3. Bij het kijken in firebug op de dom-tab ontdekte ik dat de var wp.media.model.settings.post.featuredImageId houdt (wacht op) de afgebeelde afbeeldingswaarde.

Hoop dat dit je op een of andere manier helpt.


1
2017-12-19 09:25



Ik denk dat die vent erin slaagt om het te doen: https://wordpress.stackexchange.com/questions/76125/change-the-default-view-of-media-library-in-3-5/76213#76213 Maar dit werkt niet voor mij. Ik heb de jQuery in de voettekst van mijn bericht / bewerking, plaats / nieuw maar dat werkt gewoon niet voor mij :(


0
2017-12-19 15:58