Тригер оновлення для нового медіа-менеджера в 3.5


23

Я намагаюся з’ясувати, як можна «оновити» медіатеку в новому діалозі про ЗМІ в 3.5. Я додаю зображення із зовнішньої бібліотеки зображень до бібліотеки WordPress (через комбінацію вкладки / iFrame у діалозі медіа), яка працює нормально, але мені потрібно закрити та повторно відкрити діалог, щоб показати нові додані зображення (які мають успішно прийнято до бібліотеки).

Я знаю, що існують wp.media.editor.open()і wp.media.editor.close()методи, але я не можу зовсім вдатися знайти джерело sort()або refresh()(або що інше) у джерелі. Правду кажучи, вихідний код є досить інтенсивним читанням і, console.logздається, не дуже допомагає з backbone.js. Будь-які ідеї?


3
Ще одне запитання до галереї "Новий медіа-менеджер: Великі Невідомі" . За таким ритмом я очікую повну документацію та гачки навколо WP 3.7 ... Усі відгуки вказують на голодну громаду.
— brasofilo

Замість функції refresh () ми можемо використовувати комбінацію функції wp.media.editor.close () та wp.media.editor.open () для досягнення бажаного результату.
— Вінод Далві

Наприклад, у засобі вибору зображених зображень є перемикач у рядку 3644 wp-include / js / media-views.js для того, чи завантажена медіатека чи ні. Здається, це посилання, wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthале встановлення такої довжини на 0 нічого не робить.
— NoBugs

Відповіді:


7

Правильний спосіб оновлення вмісту кадру, знайдений в ядрі WP, наведений нижче:

if(wp.media.frame.content.get()!==null){
   wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
   wp.media.frame.content.get().options.selection.reset();
}else{
   wp.media.frame.library.props.set({ignore: (+ new Date())});
}

Ви завжди повинні перевірити, чи вміст доступний, інакше оновіть бібліотеку.

Ура!


Де це в ядрі WP?
— NoBugs

Ви впевнені, що це все-таки правильно? Здається, wp.media.featuredImage.frame().options.selection.resetіснує, але немає, wp.media.featuredImage.frame().collectionнаприклад.
— NoBugs

4

Взяв мене пару днів, але я, нарешті, пробився через речі, досить зрозуміти це:

wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][1].collection.props.set({ignore:(+(new Date()))})

Здається, що повинен бути простіший шлях, але це працює для мене тим часом!


1
здається настільки інтуїтивним :) все-таки це працює !! ДЯКУЮ ТОБІ!!!
— Андрій

3
щойно знайшов "більш офіційний" спосіб це зробити:, wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});в цьому випадку я оновлюю galleryвкладку.
— Єрмім Білал

2
Поки обидві команди запускають оновлення, після цього ви більше не можете додавати зображення в модальному режимі :( потрібне інше рішення для цього
— Бенджамін Інтал,

Це ще далеко не ідеальне рішення, але варто зазначити, що media-frame-contentключ змінився з 1 на 2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
— Ян

З цієї причини вам краще скористатися більш загальною версією, розміщеною в іншому місці цього питання:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
— Ян

1

Оновлення 2019 року. Я знайшов краще рішення, яке не порушує завантажувача:

wp.media.frame.on('open', function() {
    if (wp.media.frame.content.get() !== null) {          
        // this forces a refresh of the content
        wp.media.frame.content.get().collection._requery(true);

        // optional: reset selection
        wp.media.frame.content.get().options.selection.reset();
    }
}, this);

0

це те, що ви шукаєте

wp.media.editor.remove('content');
wp.media.editor.add('content');

Поясніть, будь ласка, чому це може вирішити проблему.
— fuxia
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.