Jestem twórcą wtyczki Advanced Custom Fields i mam nadzieję, że możesz mi pomóc w rozwiązaniu problemu, z którym się spotykam.
Mam przycisk, w którym możesz edytować obraz. Ten przycisk uruchomi modalne media WP 3.5 poprzez funkcję wp_media ().
Problem polega na tym, że chcę wstępnie wybrać obraz, aby jego szczegóły były ładowane w panelu paska bocznego.
Obecnie podpinam się do „otwartego” wywołania zwrotnego i uruchamiam jakiś kod, który wypełnia ten wybór, jednak jest niezręczny i wydajny. Tak to wygląda:
// _media is an object I am using
_media.frame = wp.media({
title : 'title',
multiple : false,
button : { text : 'button' }
});
// open
_media.frame.on('open',function() {
// add class
_media.frame.$el.closest('.media-modal').addClass('acf-media-modal acf-expanded');
// set selection
var selection = _media.frame.state().get('selection'),
attachment = wp.media.attachment( id );
attachment.fetch();
selection.add( attachment );
});
// Finally, open the modal
_media.frame.open();
Działa to dobrze, dopóki użytkownik nie otworzy innego okna modalnego, wybierze kartę przesyłania, a następnie użyje utworzonego przeze mnie przycisku edycji. Teraz kod zawodzi całkowicie, ponieważ mój kod polega na tym, że modal jest w trybie przeglądania.
Znalazłem kod, który zmieni ramkę w tryb przeglądania, wygląda to tak:
_media.frame.content.mode('browse');
To działa przez pewien czas, ale potem następujący kod nie działa. Jakby renderowanie potrzebowało trochę czasu, zanim załącznik można dodać do zaznaczenia ...
Z pewnością jest lepszy sposób.
Dzięki za pomoc. Elliot
Odpowiedzi:
Oto skrypt:
Korzystam z funkcji
loadImages
w poniższym skrypcie, aby załadować istniejące załączone obrazy za pośrednictwem AJAX, a następnie po prostu przekazać funkcję z identyfikatorami obrazów, a to otworzy wstępnie wypełniony modal.A oto funkcja php, która obsługuje żądanie AJAX:
Właśnie skopiowałem fragment kodu z mojego WordPressa, mam nadzieję, że to ma sens.
źródło