छवियों के कस्टम सेट के साथ मीडिया अपलोड प्रबंधक में नया टैब कैसे जोड़ें?


18

मैं प्रबंधक और अंदर की सूची छवियों को अपलोड करने के लिए नया टैब जोड़ना चाहूंगा

theme_folder/images/patterns

मैंने टैब जोड़ने के लिए कुछ इस तरह की कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है क्योंकि यह मीडिया मैनेजर की तरफ से टैब जोड़ रहा है लेकिन छवि अपलोड पर वह टैब दिखाई नहीं देता है।

function custom_media_upload_tab_name( $tabs ) {
    $newtab = array( 'tab_slug' => 'Patterns' );
    return array_merge( $tabs, $newtab );
}

add_filter( 'media_upload_tabs', 'custom_media_upload_tab_name' );

function custom_media_upload_tab_content() {
    // Add you content here.
    echo 'Hello content';
}
add_action( 'media_upload_tab_slug', 'custom_media_upload_tab_content' );

सटीक होना यह वह जगह है जहां मैं एक नया टैब जोड़ना चाहूंगा और उस टैब में मैं थीम फ़ोल्डर से छवियों को सूचीबद्ध करना चाहूंगा।

यहां छवि विवरण दर्ज करें

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

मैं सभी सुझावों पर गर्त गया, लेकिन ऐसा लगता है कि कोई भी प्रश्न नहीं पढ़ रहा है। जैसा कि सलाह दी गई है "मैंने टैब जोड़ने के लिए कुछ इस तरह की कोशिश की, लेकिन यह मेरे लिए काम नहीं करता है क्योंकि यह मीडिया प्रबंधक की ओर से टैब जोड़ रहा है लेकिन छवि अपलोड पर वह टैब दिखाई नहीं देता है।"

इसलिए अब इसके लिए कोई भी उपाय नहीं खोज पा रहा है।

जवाबों:


6

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

add_action('admin_enqueue_scripts', function(){
    wp_enqueue_script( 'my-media-tab', plugin_dir_url( __FILE__ ) . '/js/mytab.js', array( 'jquery' ), '', true );
});

और फिर js फ़ाइल:

var l10n = wp.media.view.l10n;
wp.media.view.MediaFrame.Select.prototype.browseRouter = function( routerView ) {
    routerView.set({
        upload: {
            text:     l10n.uploadFilesTitle,
            priority: 20
        },
        browse: {
            text:     l10n.mediaLibraryTitle,
            priority: 40
        },
        my_tab: {
            text:     "My tab",
            priority: 60
        }
    });
};

संपादित करें: ठीक है, तो। सामग्री को संभालने के लिए मुझे wp.media द्वारा ऐसा करने का एक अच्छा तरीका नहीं मिला है। मेरा वर्तमान समाधान 2 लिसेरेन हैं, एक मीडिया लाइब्रेरी खोलने के लिए और एक मीडिया राउटर मेनू में क्लिक करने के लिए;

jQuery(document).ready(function($){
    if ( wp.media ) {
        wp.media.view.Modal.prototype.on( "open", function() {
            if($('body').find('.media-modal-content .media-router a.media-menu-item.active')[0].innerText == "My tab")
                doMyTabContent();
        });
        $(wp.media).on('click', '.media-router a.media-menu-item', function(e){
            if(e.target.innerText == "My tab")
                doMyTabContent();
        });
    }
});

फ़ंक्शन doMyTabContent (); जैसे कुछ है;

function doMyTabContent() {
    var html = '<div class="myTabContent">';
    //My tab content here
    html += '</div>';
    $('body .media-modal-content .media-frame-content')[0].innerHTML = html;
}

मुझे यकीन है कि यह बहुत अधिक नाजुक तरीके से किया जा सकता है। जो कोई भी इसे पढ़ता है और इसका बेहतर समाधान होता है, कृपया :-) में भरें


इसके लिए thnx इसमें दिखेगा। पुराना है या नहीं, यह कभी हल नहीं हुआ। और यह वही है जो मैंने prntscr.com/kse5yk ​​के लिए पूछा था । अच्छा काम!
बेन्ने

क्या आपने इस wordpress.stackexchange.com/a/190604/67176 और अपने टैब निर्माण को संयोजित करने का प्रयास किया ? मुझे यकीन है कि 99% यह काम कर सकता है, खासकर अगर टैब में एक ही आईडी हो।
बेन

1
हां, मैंने पहली बार देखा, लेकिन मैं वास्तव में iframe समाधान का प्रशंसक नहीं हूं जो इस समाधान के साथ आता है। आईफ्रेम संदेश के साथ छवि डेटा को पुनः प्राप्त करना। सामग्री प्रदर्शित करना एक बात है, लेकिन कार्यों को संभालना एक और बात है। :) शायद मैं कुछ याद कर रहा हूँ।
गुबफेट

हैलो @Benn अभी wp.media बुरे सपने में फिर से पकड़ा। ऊपर दिया गया कोड, जहां मैं अपना "doMyTabContent" करता हूं, केवल एक घटना पर ट्रिगर करता है। उदाहरण के लिए: एक पोस्ट लोड करें, ऐड इमेज में क्लिक करें और बंद करें। इसके बाद पोस्ट के लिए मीडिया जोड़ें पर क्लिक करें, और यह कुछ भी लोड नहीं करता है, शायद चूंकि wp.media एक नए उदाहरण में है (टैब अभी भी वहाँ है)। मुझे यकीन नहीं है कि यहाँ कैसे आगे बढ़ना है। क्या आपने टैब जोड़ने और मीडिया को किसी तरह से जोड़ने के बारे में कोई प्रगति की है? कुछ कोड साझा करना चाहते हैं? :)
जुबफेट

@gubbfett क्या आपने कभी इसका हल ढूंढा?
राजग्राम

5

वर्डप्रेस कोडेक्स के अनुसार आप इस तरह मीडिया अपलोडर में कस्टम टैब जोड़ सकते हैं:

// add the tab
add_filter('media_upload_tabs', 'my_upload_tab');
function my_upload_tab($tabs) {
    $tabs['mytabname'] = "My Tab Name";
    return $tabs;
}

// call the new tab with wp_iframe
add_action('media_upload_mytabname', 'add_my_new_form');
function add_my_new_form() {
    wp_iframe( 'my_new_form' );
}

// the tab content
function my_new_form() {
    echo media_upload_header(); // This function is used for print media uploader headers etc.
    echo '<p>Example HTML content goes here.</p>';
}

आशा है इससे आपकी मदद होगी।


7
स्पष्ट होने के लिए, उस टैब को मोडल बॉक्स के शीर्ष पर नहीं जोड़ा जाता है, लेकिन बाईं ओर के साइडबार में। मुझे वास्तव में सम्मिलित मीडिया टैब के शीर्ष पर टैब जोड़ने का कोई तरीका नहीं मिला। मेरे पास पहले से उपलब्ध सीएसएस शैलियों का उपयोग करने की कोशिश करने के मुद्दे भी थे क्योंकि सामग्री एक आइफ्रेम के अंदर डाली गई है। जिसका अर्थ है कि आपको छवियों को सही ढंग से प्रदर्शित करने के लिए अपनी स्वयं की सीएसएस जोड़ने की आवश्यकता होगी। और बस जवाब पूरा करने के लिए, आप छवि फ़ोल्डर के अंदर सभी वस्तुओं को पुनः प्राप्त करने के लिए php स्कैंडिर () फ़ंक्शन का उपयोग कर सकते हैं।
gdaniel

-1
   function axcoto_genify_media_menu($tabs) {
            $newtab = array('genify'  => __('Axcoto Genify', 'axcotogenify'));
            return array_merge($tabs, $newtab);
            }
            add_filter('media_upload_tabs', 'axcoto_genify_media_menu');

           array('genify' => __('Axcoto Genify', 'axcotogenify'));


        function axcoto_genify_media_process() {
        media_upload_header();
        echo 'hello';
        }
        function axcoto_genify_media_menu_handle() {
        return wp_iframe( 'axcoto_genify_media_process');
        }



 if ( ( is_array( $content_func ) && ! empty( $content_func[1] ) && 0 === strpos( (string) $content_func[1], 'media' ) ) || 0 === strpos( $content_func, 'media' ) )
        wp_enqueue_style( 'media' );

1
आपका कोड वाक्य रचना त्रुटियों से भरा है। कृपया उचित php सिंटैक्स का उपयोग करें क्योंकि आप जिस सिंटैक्स का उपयोग कर रहे हैं वह php में भी मौजूद नहीं है। इसके अलावा, कृपया बताएं कि आपका कोड क्या करता है और यह कैसे काम करता है। धन्यवाद
osen:

मैंने अभी कोड संपादित किया था। इसका कार्य कोड। इस कोड को लें।
सारथ

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