Intereting Posts
Получить следующее / предыдущее изображение / вложение во времени с запросом даты Пользовательская таксономия как раскрывающийся список Функция быстрого вызова функции обратного вызова, использующая переменную в начальном теге Где я могу найти список крючков WordPress? Могу ли я иметь сайт WordPress, хранящийся на субдомене другого веб-сайта, принадлежащего мне? вызов приветствия администратора в другом месте «Автоматически добавлять новые страницы верхнего уровня». По умолчанию Получать персонализированные категории сообщений для отображения в меню Преобразование HTML в HTML 5? Измените вывод HTML комментариев Правильный способ использования get_template_part () и get_post_format () с пользовательскими типами сообщений? Вызывает ли проблема AUTH_KEY проблему безопасности? Frontend Post с выпуском JQuery AJAX для Php Пользовательское меню с различным поведением для каждого элемента Комментарий Ссылка из get_comments ()?

Открыть фрейм носителя и выбрать вложение

Я использую следующий фрагмент кода для открытия медиа-фрейма при нажатии ссылки с атрибутом data-attachment_id . Этот атрибут содержит идентификатор вложения, который я хочу выбрать при открытии фрейма:

 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(); }); }); 

Когда я нажимаю на ссылку в первый раз, открывается рамка и выбирается соответствующее вложение. Но, если я закрою рамку и снова нажимаю ссылку, кадр открывается снова, но вложения не выбрано.

Какие-нибудь идеи о том, что я могу делать неправильно?

заранее спасибо

Solutions Collecting From Web of "Открыть фрейм носителя и выбрать вложение"

Ну, я нашел ответ сам. Надеюсь, это поможет другим:

Я заменил оба экземпляра:

 if ( selected ) { selection.add( wp.media.attachment( selected ) ); } 

с:

 selection.reset( selected ? [ wp.media.attachment( selected ) ] : [] ); 

По-видимому, функция reset() может использоваться для удаления массива, а затем добавить к нему элементы.