Làm mới kích hoạt cho trình quản lý phương tiện mới trong 3.5


23

Tôi đang cố gắng tìm hiểu làm thế nào có thể 'làm mới' thư viện phương tiện trong cuộc đối thoại phương tiện mới trong 3.5. Tôi đang thêm hình ảnh từ thư viện hình ảnh bên ngoài vào thư viện WordPress (thông qua kết hợp tab / iFrame trong hội thoại phương tiện) hoạt động tốt, nhưng tôi phải đóng và mở lại đoạn hội thoại để hiển thị hình ảnh mới được thêm vào ( đã được quảng cáo thành công vào thư viện).

Tôi biết có wp.media.editor.open()wp.media.editor.close()phương pháp, nhưng tôi hoàn toàn không thể tìm thấy một sort()hoặc refresh()(hoặc bất cứ điều gì) trong nguồn. Sự thật mà nói, mã nguồn đọc khá mãnh liệt và console.logdường như không giúp được gì nhiều với backbone.js. Có ý kiến ​​gì không?


3
Thêm một câu hỏi nữa cho thư viện "Trình quản lý phương tiện mới: Điều chưa biết lớn" . Theo nhịp điệu, tôi mong đợi tài liệu đầy đủ và móc nối xung quanh WP 3.7 ... Tất cả các upvote cho thấy một cộng đồng đói.
brasofilo

Thay vì hàm refresh (), chúng ta có thể sử dụng kết hợp hàm wp.media.editor.close () và wp.media.editor.open () để đạt được đầu ra mong muốn.
Vinod Dalvi

Ví dụ, trong trình chọn hình ảnh đặc trưng, ​​có một công tắc trong dòng 3644 của wp-gồm / js / media-view.js cho dù thư viện phương tiện đã được tải hay chưa. Nó dường như được tham chiếu wp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthnhưng đặt độ dài đó thành 0 không làm gì cả.
NoBugs

Câu trả lời:


7

Cách chính xác để làm mới nội dung của khung, như được tìm thấy trong lõi WP, như sau:

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

Bạn phải luôn luôn kiểm tra nội dung có sẵn, nếu không thì làm mới thư viện.

Chúc mừng!


Cái này ở đâu trong lõi WP?
NoBugs

Bạn có chắc chắn điều này vẫn đúng? Nó dường như wp.media.featuredImage.frame().options.selection.resettồn tại nhưng không có wp.media.featuredImage.frame().collectionví dụ.
NoBugs

4

Mất vài ngày nhưng cuối cùng tôi cũng tìm được mọi thứ đủ để hiểu điều này:

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

Có vẻ như phải có một cách dễ dàng hơn nhưng điều đó có hiệu quả với tôi trong lúc này!


1
có vẻ rất trực quan :) tuy nhiên, điều này hoạt động !! CẢM ƠN BẠN!!!
Andrej

3
chỉ tìm thấy một cách "chính thức hơn" để làm điều đó : wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});, trong trường hợp này tôi đang làm mới gallerytab.
Jermim song phương

2
Mặc dù cả hai lệnh đều kích hoạt làm mới, nhưng sau đó bạn không còn có thể thêm hình ảnh trong chế độ :( cần một giải pháp khác cho việc này
Benjamin Intal

Đây vẫn là một giải pháp lý tưởng, nhưng đáng chú ý là media-frame-contentkhóa đã thay đổi từ 1 thành 2:wp.media.editor.get(wpActiveEditor).views._views[".media-frame-content"][0].views._views[""][2].collection.props.set({ignore:(+(new Date()))})
Ian

Vì lý do trên, bạn nên sử dụng phiên bản chung chung hơn được đăng ở nơi khác trong câu hỏi này:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian

1

Cập nhật 2019. Tôi tìm thấy một giải pháp tốt hơn mà không phá vỡ trình tải lên:

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

đó là những gì bạn đang tìm kiếm

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

Hãy giải thích tại sao điều đó có thể giải quyết vấn đề.
fuxia
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.