Тригер оновлення для нового медіа-менеджера в 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.