वर्डप्रेस 3.5 मीडिया मैनेजर में एक मेनू आइटम जोड़ें


34

नए वर्डप्रेस 3.5 मीडिया मैनेजर में बाएं साइडबार पर "इन्सर्ट फ्रॉम यूआरएल" के नीचे एक नया मेनू आइटम कैसे जोड़ा जा सकता है?

मैं रीढ़ की हड्डी के जेएस को देख रहा हूं और अपने हाथ से अपने जेएस के साथ हुक करने की कोशिश की, लेकिन सफलता के बिना।

संपादित 2: यह चाल करने के लिए लगता है:

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

यह साधारण सामान के लिए करना चाहिए, लेकिन मुझे लगता है कि जावास्क्रिप्ट में भी यही काम करना संभव है। अच्छा होगा यदि नया मीडिया मैनेजर इंटर्नल कैसे काम करता है, इस पर एक ट्यूटोरियल / स्पष्टीकरण था।


आपका नया मेनू क्या करने वाला है? मेनू आइटम जोड़ना मुख्य समस्या नहीं है और आप सही ट्रैक पर हैं, लेकिन यदि आपका मेनू माना जाता है कि डिफ़ॉल्ट दृश्य से अलग कुछ भी प्रदर्शित होता है, बस बदली हुई सेटिंग के साथ, बैकबोन को आपके मेनू आइटम के लिए एक दृश्य की आवश्यकता है ... यही कारण है कि मैं जहाँ भी
अटक

मेनू आइटम पर क्लिक करने पर एक अलग दृश्य दिखाया जाता है। दिखाने के लिए मेनू आइटम प्राप्त करना पहला कदम होगा
ेरेसी

1
मेरे 150 पॉइंट बाउंस के बारे में: "इन्सर्ट से यूआरएल डालें" के नीचे एक नया स्टेट मेनू आइटम जोड़ने और पोस्ट एडिटर के प्राथमिक मीडिया मोडल में एक नए दृश्य को जोड़ने के लिए जेएस-आधारित पद्धति का उपयोग करने के मूल पोस्टर को जारी रखने का लक्ष्य।
स्कॉट किंग्सले क्लार्क

@ सेरी, क्या आप इस पर जवाब को चिह्नित कर सकते हैं क्योंकि फैबिन क्वात्रावाक्स द्वारा प्रदान किया गया है?
स्कॉट किंग्सले क्लार्क

जवाबों:


19

ठीक है, मुझे लगता है कि मेरे पास कुछ ऐसा है जो वास्तव में एक उत्तर देने के करीब है:

मैंने अपना कोड एक जिस्ट में डाल दिया

यहाँ परिणाम है: कस्टम मेनू स्क्रीनशॉट

मैंने एमवीसी पैटर्न का सम्मान करने के लिए कई बैकबोन ऑब्जेक्ट का निर्माण किया: controller.Customसभी लॉजिक, view.Toolbar.Customटूलबार बटन के साथ सौदे करने और view.Customइनर यूआई प्रदर्शित करने के लिए प्रभारी है ।


2
यह अब तक क्या गायब है?
कैसर

+1 अच्छी शुरुआत! लेकिन, हां, इसके बजाय हमें यह जानने के लिए इसे लागू करने की आवश्यकता है कि यह क्या करता है, एक स्नैपशॉट बहुत आसान होगा । और //build an empty view (needs more work)उत्तर की सामग्री के लिए टिप्पणी की उस रेखा को भी खींचें ।
ब्रासोफिलो

मैंने परिणाम दिखाने के लिए एक स्क्रीनशॉट जोड़ा है। अब अगली बात यह है कि उस दृश्य को स्वयं कार्यान्वित किया जाए जो HTML घटकों को प्रदर्शित करेगा और उपयोगकर्ता इंटरैक्शन पर प्रतिक्रिया देगा।
फबिएन क्वात्रावाक्स

यह अच्छा लग रहा है, यह निश्चित रूप से एक शुरुआत है! इनाम के लायक है, लेकिन जरूरत महसूस होने पर इसे अगले स्तर पर ले जाने के लिए स्वतंत्र महसूस करें।
स्कॉट किंग्सले क्लार्क

इनाम स्कॉट के लिए धन्यवाद! मैं निश्चित रूप से थोड़ा गहरा खुदाई करूंगा क्योंकि मुझे काम पर एक परियोजना के लिए इसकी आवश्यकता है। जैसे ही यह प्रयोग करने योग्य होगा मैं अपना कोड यहां वापस भेज दूंगा।
फेबियन क्वात्रावाक्स

10

मैं "राउटर मेनू" के लिए एक बटन जोड़ने पर काम कर रहा हूं ("मीडिया लाइब्रेरी" के कुछ अधिकार जोड़ रहा हूं), लेकिन सिस्टम समान है।

<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
इस पर कोई भाग्य? एक जेएस-आधारित समाधान वह है जो मैं वास्तव में देखना चाहता हूं, न कि iframe PHP समाधान पहले से ही मूल पोस्टर के संपादन और एक अन्य उत्तर में उल्लेख किया गया है
स्कॉट किंग्सले क्लार्क

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, अच्छा स्निपेट :)
ब्रासोफिलो

3

मेरे पास कोई हल नहीं है, लेकिन संकेत हैं। तार एक सरणी से प्राप्त होते हैं। आप हुक के माध्यम से फ़िल्टर कर सकते हैं media_view_strings। क्लिक के बाद मोडल बॉक्स एक जावास्क्रिप्ट है, WP 3.5 के बाद से backbone.js के साथ बनाएँ। अन्दर देखें/wp-includes/js/media-views.jsएक समाधान के लिए । मेरे लिए बैकबोन भी नया है और स्क्रिप्ट में स्रोत की कई लाइनें हैं।


यह एक बहुत अच्छा संकेत था, लेकिन मुझे लगता है कि यह कम है। media.view.settingsJs वर नए टैब जोड़ने के लिए एक php फिल्टर द्वारा फेरबदल किया जा सकता है, लेकिन फिर ये टैब एक iframe के माध्यम से प्रदान की गई कर रहे हैं (देखें createIframeStatesमें विधि media-views.js)।
फबिएन क्वात्रावाक्स

हो सकता है कि आप अपने ब्लॉग oo के लिए एक ट्यूटोरियल जोड़ सकते हैं, मीडिया दृश्य के अंदर एक सरल लिंक जोड़ने के लिए और इस लिंक पर क्लिक करने पर एक कस्टम क्रिया? आपका वर्तमान जिस्ट बहुत जटिल है और इसमें बहुत सारी कस्टम क्रियाएं हैं।
बुलेटी

दुर्भाग्य से, मुझे इसे प्राप्त करने का एक और सरल तरीका नहीं मिला। यह कोड केवल एक मूल काम कर रहा है: बाईं ओर एक कस्टम मेनू आइटम जोड़ें, अपने स्वयं के सामग्री दृश्य, टूलबार और नियंत्रक के साथ। यह सब निर्माण बैकबोन द्वारा आवश्यक विचारों और नियंत्रक के निर्माण के लिए आवश्यक है। लेकिन अगर आपके पास एक सरल समाधान है, तो बेझिझक मेरे जिस्म को कांटे।
फेबियन क्वात्रावाक्स

हां, मैंने इसे देखा है और इसका परीक्षण भी किया है, ठीक काम करता है। लेकिन मुझे लगता है कि यह अच्छा था, कि आप केवल एक बटन या लिंक और डिफ़ॉल्ट मीडिया स्क्रीन के अंदर कॉलबैक फंकशन के लिए एक जिस्ट बनाते हैं, एक अतिरिक्त हिस्सा नहीं, आपके उदाहरण में कैसे।
bueltge
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.