Я являюсь разработчиком плагина Advanced Custom Fields и надеюсь, что вы поможете мне с проблемой, с которой я столкнулся.
У меня есть кнопка, где вы можете редактировать изображение. Эта кнопка запускает медиа-мод WP 3.5 с помощью функции wp_media ().
Проблема в том, что я хочу предварительно выбрать изображение, чтобы его детали загружались на боковую панель.
В настоящее время я подключаюсь к обратному вызову open и запускаю некоторый код, который заполняет этот выбор, однако он неуклюж и эффективен. Вот как это выглядит:
// _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();
Это работает нормально, пока пользователь не откроет другое модальное окно, не выберет вкладку загрузки, а затем использует кнопку редактирования, которую я создал. Теперь код полностью потерпел неудачу, потому что мой код полагается на то, что модал находится в режиме просмотра.
Я нашел некоторый код, который переключит фрейм в режим просмотра, он выглядит так:
_media.frame.content.mode('browse');
Это работает некоторое время, но затем следующий код не работает. Как будто требуется некоторое время для рендеринга, прежде чем вложение может быть добавлено в выделение
Конечно, есть лучший способ.
Спасибо за вашу помощь. Эллиот
Ответы:
Вот сценарий:
Я использую функцию
loadImages
в следующем скрипте для загрузки существующих прикрепленных изображений через AJAX, а затем просто передаю функцию с идентификаторами изображений, и она открывает предварительно заполненный модал.А вот функция php, которая обрабатывает AJAX-запрос:
Я только что скопировал фрагмент из моей платформы WordPress, надеюсь, это имеет смысл.
источник