ทริกเกอร์รีเฟรชสำหรับเครื่องมือจัดการสื่อใหม่ใน 3.5


23

ฉันกำลังพยายามหาวิธีที่จะ 'รีเฟรช' ไลบรารีสื่อในกล่องโต้ตอบสื่อใหม่ใน 3.5 ฉันกำลังเพิ่มรูปภาพจากไลบรารีรูปภาพภายนอกไปยังไลบรารี WordPress (ผ่านคำสั่งผสมแท็บ / iFrame ในกล่องโต้ตอบสื่อ) ซึ่งใช้งานได้ แต่ฉันต้องปิดและเปิดกล่องโต้ตอบใหม่เพื่อแสดงรูปภาพที่เพิ่งเพิ่มใหม่ (ซึ่งมีเรียบร้อยแล้วได้รับการ aded ไปยังห้องสมุด)

ฉันรู้ว่ามีwp.media.editor.open()และwp.media.editor.close()วิธีการต่าง ๆ แต่ฉันก็ไม่สามารถที่จะหาsort()หรือrefresh()(หรืออะไรก็ตาม) ในแหล่งที่มา ความจริงจะบอกรหัสแหล่งที่มาคือการอ่านที่รุนแรงมากและconsole.logดูเหมือนจะไม่ได้ช่วย backbone.js มากนัก ความคิดใด ๆ


3
อีกหนึ่งคำถามในแกลเลอรี่"New Media Manager: The Great ไม่รู้จัก" ฉันคาดว่าจะมีเอกสารประกอบครบถ้วนและขอเกี่ยวกับ WP 3.7 ... upvotes ทั้งหมดบ่งบอกถึงชุมชนที่หิวโหย
brasofilo

แทนที่จะรีเฟรชฟังก์ชั่น () เราสามารถใช้การรวมกันของฟังก์ชั่น wp.media.editor.close () และ wp.media.editor.open () เพื่อให้ได้ผลลัพธ์ที่ต้องการ
Vinod Dalvi

ในตัวอย่างเด่น - ภาพ - ตัวเลือกมีสวิตช์ในบรรทัด wp-include / js / media-views.js 3644 ว่าไลบรารีสื่อได้โหลดหรือไม่ ดูเหมือนว่าจะเป็นการอ้างอิงwp.media.featuredImage.frame().views.get('.media-frame-content')[0].views.get("")[3].collection.lengthแต่การตั้งค่าความยาวเป็น 0 นั้นไม่ได้ทำอะไรเลย
NoBugs

คำตอบ:


7

วิธีที่ถูกต้องในการรีเฟรชเนื้อหาของเฟรมดังที่พบใน WP core มีดังนี้:

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 core?
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
ดูเหมือนง่ายมาก :) อย่างไรก็ตามมันก็ใช้งานได้ !! ขอขอบคุณ!!!
Andrej

3
เพิ่งพบวิธี "เป็นทางการมากขึ้น" ที่จะทำ: wp.media.frame.content.get('gallery').collection.props.set({ignore: (+ new Date())});ในกรณีนี้ฉันรีเฟรชgalleryแท็บ
Jermim bilal

2
ในขณะที่คำสั่งทั้งสองทำการเรียกใช้การรีเฟรชหลังจากนั้นคุณไม่สามารถเพิ่มรูปภาพใน modal ได้ :( ต้องการโซลูชันอื่นสำหรับสิ่งนี้
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()))})
Ian

ด้วยเหตุผลข้างต้นคุณควรใช้รุ่นทั่วไปที่โพสต์เพิ่มเติมที่อื่นในคำถามนี้:wp.media.frame.content.get().collection.props.set({ignore: (+ new Date())});
Ian Ian

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.