Обновление триггера для нового медиа-менеджера в 3.5


23

Я пытаюсь выяснить, как можно «обновить» медиа-библиотеку в новом медиа-диалоге в 3.5. Я добавляю изображения из внешней библиотеки изображений в библиотеку WordPress (через комбо tab / 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 () для достижения желаемого результата.
Винод Дальви

Например, в элементе Featured-Image-Pick в строке 3644 wp-includes / 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
Хотя обе команды запускают обновление, после этого вы больше не можете добавлять изображения в модал :( нужно другое решение для этого
Benjamin Intal

Это все еще далеко от идеального решения, но стоит отметить, что 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.