เพิ่มรายการเมนูไปยัง Wordpress 3.5 Media Manager


34

จะเพิ่มรายการเมนูใหม่ใต้ "การแทรกจาก URL" บนแถบด้านข้างซ้ายในตัวจัดการสื่อ Wordpress 3.5 ได้อย่างไร

ฉันได้ดูแบ็คโบนแล้วลองใช้มือของฉันกับ JS ของตัวเอง แต่ก็ไม่ประสบความสำเร็จ

แก้ไข 2: นี่ดูเหมือนจะเป็นการหลอกลวง:

http://sumtips.com/2012/12/add-remove-tab-wordpress-3-5-media-upload-page.html

ควรทำเพื่อสิ่งที่ง่าย แต่ฉันคิดว่ามันอาจเป็นไปได้ที่จะทำสิ่งเดียวกันใน Javascript จะดีถ้ามีการสอน / คำอธิบายเกี่ยวกับวิธีการทำงานของผู้จัดการสื่อใหม่ภายใน


เมนูใหม่ของคุณควรจะทำคืออะไร? การเพิ่มรายการเมนูไม่ใช่ปัญหาหลักและคุณอยู่ในเส้นทางที่ถูกต้อง แต่ถ้าเมนูของคุณควรแสดงสิ่งที่แตกต่างจากมุมมองเริ่มต้นเพียงแค่เปลี่ยนการตั้งค่า Backbone ต้องมีมุมมองสำหรับรายการเมนูของคุณ ... และ นั่นคือที่ที่ฉันติดอยู่เช่นกัน ...
ungestaltbar

คลิกที่รายการเมนูที่ควรจะแสดงมุมมองที่แตกต่างกัน การรับไอเท็มเมนูเพื่อแสดงจะเป็นขั้นตอนแรก
erezie

1
สำหรับ 150 จุดของฉัน: มองหาจุดประสงค์ของผู้โพสต์ดั้งเดิมเพื่อใช้วิธีการที่ใช้ JS เพื่อเพิ่มรายการเมนูสถานะใหม่ด้านล่าง "แทรกจาก URL" และเชื่อมโยงมุมมองใหม่ในโมดอลสื่อหลักของเครื่องมือแก้ไขโพสต์
Scott Kingsley Clark

@erezie คุณสามารถทำเครื่องหมายคำตอบนี้เป็นคำตอบของ Fabien Quatravaux ได้หรือไม่
Scott Kingsley Clark

คำตอบ:


19

ตกลงฉันคิดว่าฉันมีบางสิ่งที่ใกล้เคียงกับคำตอบจริง:

ฉันใส่รหัสของฉันในส่วนสำคัญ

นี่คือผลลัพธ์: ภาพหน้าจอเมนูที่กำหนดเอง

ฉันสร้างวัตถุ Backbone หลายอันเพื่อเคารพรูปแบบ MVC controller.Customนั่นคือรับผิดชอบในการทำตรรกะทั้งหมดview.Toolbar.Customข้อตกลงกับปุ่มแถบเครื่องมือและview.Customแสดง UI ภายใน


2
มันหายไปไกลขนาดไหน?
ไกเซอร์

+1 เริ่มต้นดี! แต่ใช่แทนเราจำเป็นต้องดำเนินการนี้จะรู้ว่าสิ่งที่มันไม่เป็นภาพรวมจะมีประโยชน์มาก และดึงบรรทัดความคิดเห็นนั้น//build an empty view (needs more work)ไปที่เนื้อหาของคำตอบ
brasofilo

ฉันได้เพิ่มภาพหน้าจอเพื่อแสดงผลลัพธ์ สิ่งต่อไปที่ต้องทำตอนนี้คือการใช้มุมมองที่จะแสดงองค์ประกอบ HTML และตอบสนองต่อการโต้ตอบของผู้ใช้
Fabien Quatravaux

นี่มันเจ๋งมากนั่นเป็นการเริ่มต้นอย่างแน่นอน! สมควรที่จะได้รับรางวัล แต่อย่าลังเลที่จะก้าวไปอีกระดับถ้าคุณรู้สึกว่าต้องการ
Scott Kingsley Clark

ขอบคุณสำหรับเงินรางวัล! ฉันจะขุดลึกลงไปอีกเล็กน้อยแน่นอนเพราะฉันต้องการมันสำหรับโครงการในที่ทำงาน ฉันจะโพสต์รหัสของฉันกลับมาที่นี่ทันทีที่สามารถใช้งานได้
Fabien Quatravaux

10

ฉันกำลังเพิ่มปุ่มลงใน "เมนูเราเตอร์" (เพิ่มบางอย่างที่ถูกต้องของ "Media Library") แต่ระบบเหมือนกัน

<script type="text/javascript">
    jQuery(window).on('load', function() {
        var media   = window.wp.media,  
        Attachment  = media.model.Attachment,
        Attachments = media.model.Attachments,
        Query       = media.model.Query,
        l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n,
        NewMenuItem;

        jQuery(document).on( 'click', '.insert-media', function( event ) {
            var workflow = wp.media.editor.get();
            var options = workflow.options;
            if( undefined == NewMenuItem ) {
                NewMenuItem = new wp.media.view.RouterItem( _.extend( options, { text: 'New Item!' } ) );
                workflow.menu.view.views.set( '.media-menu', NewMenuItem, _.extend( options, { add: true } ) );
            }

        });
    });
</script>

ตอนนี้มันยังไม่ทำอะไรเลย นั่นคือขั้นตอนต่อไป!


2
มีโชคกับเรื่องนี้ไหม? โซลูชันที่ใช้ JS คือสิ่งที่ฉันต้องการเห็นไม่ใช่โซลูชัน iframe PHP ที่ระบุไว้ในการแก้ไขของผู้โพสต์ดั้งเดิมและคำตอบอีกคำตอบ
Scott Kingsley Clark

7

คุณสามารถขอลงในmedia_upload_tabsตัวกรองเพื่อเพิ่มแท็บ นี่เป็นวิธีที่ใช้โดยปลั๊กอินเครือข่ายสื่อที่ใช้ร่วมกัน :

function wpse_76980_add_upload_tab( $tabs ) {
    $newtab = array( 'tab_slug' => 'Tab Name' );
    return array_merge( $tabs, $newtab );
}
add_filter( 'media_upload_tabs', 'wpse_76980_add_upload_tab' );

จากนั้นคุณสามารถขอเกี่ยวกับการmedia_upload_tab_slugกระทำ (ซึ่งtab_slugมีการใช้ตามที่กล่าวไว้ข้างต้น) เพื่อแสดงเนื้อหาของแท็บ:

function wpse_76980_media_upload() {
    // display tab contents
}
add_action( 'media_upload_tab_slug', 'wpse_76980_media_upload' );

2
นี่เป็นวิธีการเพิ่มแท็บแบบเก่า แม้ว่ามันจะยังคงใช้งานได้ แต่ฉันสงสัยว่า WP นั้นกำลังเคลื่อนห่างจากมัน
เจนนี่

2
@ เจนนี่ฉันคิดว่าเราอาจเชื่อใจตัวกรองนี้ ที่เกี่ยวข้องตั๋ว (: โอ้, และ +1, snipett ดี :)
brasofilo

3

ฉันไม่ได้แก้ปัญหา แต่เป็นคำใบ้ สตริงได้มาจากอาร์เรย์ media_view_stringsคุณสามารถกรองผ่านเบ็ด กล่องคำกริยาหลังจากคลิกคือ javascript, สร้างด้วย backbone.js ตั้งแต่ WP 3.5 ดู/wp-includes/js/media-views.jsวิธีแก้ปัญหา Backbone ยังใหม่สำหรับฉันและสคริปต์มีแหล่งที่มาหลายบรรทัด


นั่นเป็นคำใบ้ที่ดีมาก แต่ฉันคิดว่ามันสั้น media.view.settingsvar js สามารถ tweaked โดยตัวกรอง PHP เพื่อเพิ่มแท็บใหม่ แต่แล้วแท็บเหล่านี้จะแสดงผลผ่าน iframe (ดูcreateIframeStatesวิธีการในmedia-views.js)
Fabien Quatravaux

บางทีคุณสามารถเพิ่มบทช่วยสอนสรุปสาระสำคัญไปยังบล็อกของคุณเพื่อเพิ่มลิงค์ง่าย ๆ ภายในมุมมองสื่อและการกระทำที่กำหนดเองเมื่อคลิกที่ลิงค์นี้? ส่วนสำคัญของคุณในปัจจุบันซับซ้อนและมีการกระทำที่กำหนดเองมากมาย
bueltge

น่าเสียดายที่ฉันไม่พบวิธีที่ง่ายกว่านี้ในการบรรลุเป้าหมาย รหัสนี้กำลังทำสิ่งพื้นฐานเพียงอย่างเดียว: เพิ่มรายการเมนูที่กำหนดเองทางด้านซ้ายพร้อมด้วยมุมมองเนื้อหาแถบเครื่องมือและตัวควบคุม สิ่งก่อสร้างทั้งหมดนี้จำเป็นสำหรับการสร้างมุมมองและตัวควบคุมที่ Backbone ต้องการ แต่ถ้าคุณมีทางออกที่ง่ายกว่าอย่าลังเลที่จะแยกส่วนสำคัญของฉัน
Fabien Quatravaux

ใช่ฉันเห็นสิ่งนี้แล้วและทดสอบใช้งานได้ดี แต่ฉันคิดว่ามันดีที่คุณสร้างส่วนสำคัญสำหรับปุ่มหรือลิงค์และฟังก์ชั่นโทรกลับภายในหน้าจอสื่อเริ่มต้นไม่ใช่ส่วนเพิ่มเติมเป็นอย่างไรในตัวอย่างของคุณ
bueltge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.