কীভাবে ছবিগুলির কাস্টম সেট সহ মিডিয়া আপলোড পরিচালককে নতুন ট্যাব যুক্ত করবেন?


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

এবং তারপরে জেএস ফাইল:

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 ​​চেয়েছিলাম । দারূন কাজ!
বেন

আপনি কি এই ওয়ার্ডপ্রেস.stackexchange.com/a/190604/67176 এবং আপনার ট্যাব তৈরির সমন্বয় করার চেষ্টা করেছিলেন ? আমি 99% নিশ্চিত যে এটি কাজ করতে পারে বিশেষত যদি ট্যাবগুলির একই আইডি থাকে।
বেন

1
হ্যাঁ, আমি প্রথমে এটি দেখেছি, তবে আমি সত্যিই এই সমাধানের সাথে আসা আইফ্রেমে সমাধানের কোনও ভক্ত নই। Iframe মেসেজিং সহ চিত্রের ডেটা পুনরুদ্ধার করা। বিষয়বস্তু প্রদর্শন করা একটি জিনিস, তবে ক্রিয়াকলাপ পরিচালনা করা অন্য জিনিস। :) সম্ভবত আমি কিছু মিস করছি।
gubbfett

হ্যালো @ বেন সবেমাত্র ডব্লিউপি.মিডিয়া দুঃস্বপ্নগুলিতে ধরা পড়ে। আমি আমার "doMyTabContent" যেখানে করি তার উপরে আমি যে কোডটি দিয়েছি তা কেবল একটি ইভেন্টে ট্রিগার করে। উদাহরণস্বরূপ: একটি পোস্ট লোড করুন, বৈশিষ্ট্যযুক্ত চিত্র যুক্ত করুন এবং ক্লিক করুন। এই ক্লিকের পরে পোস্টের জন্য মিডিয়া যুক্ত করুন, এবং এটি কোনও কিছু লোড করে না, সম্ভবত ডাব্লুপি.মিডিয়া একটি নতুন উদাহরণে রয়েছে (ট্যাবটি এখনও সেখানে রয়েছে)। আমি এখানে কীভাবে এগিয়ে যাব তা নিশ্চিত নই। কোনও উপায়ে কোনও ট্যাব যুক্ত করা এবং মিডিয়া সন্নিবেশ করার বিষয়ে আপনি কি কোনও অগ্রগতি করেছেন? কিছু কোড শেয়ার করতে চান? :)
gubbfett

@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
পরিষ্কার হওয়ার জন্য, সেই ট্যাবটি মডেল বাক্সের শীর্ষে যোগ করা হয়নি, তবে বাম দিকের বারেও রয়েছে। আমি সন্নিবেশ মিডিয়া ট্যাবটির শীর্ষে ট্যাবটি আসলে যুক্ত করার কোনও উপায় খুঁজে পাইনি। ইতোমধ্যে উপলব্ধ সিএসএস শৈলীগুলি ব্যবহার করার চেষ্টা করার ক্ষেত্রেও আমার সমস্যা ছিল কারণ বিষয়বস্তুটি একটি আইফ্রেমের অভ্যন্তরে .োকানো হয়েছে। যার অর্থ সম্ভবত চিত্রগুলি সঠিকভাবে প্রদর্শন করতে আপনার নিজের সিএসএস যুক্ত করা দরকার to এবং কেবল উত্তরটি সম্পূর্ণ করতে, আপনি চিত্র ফোল্ডারের অভ্যন্তরে সমস্ত আইটেম পুনরুদ্ধার করতে পিএইচপি স্ক্যান্ডির () ফাংশনটি ব্যবহার করতে পারেন।
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
আপনার কোড সিনট্যাক্স ত্রুটি পূর্ণ। আপনি যে সিনট্যাক্সটি ব্যবহার করছেন সেটি যথাযথ পিএইচপি সিনট্যাক্স ব্যবহার করুন এমনকি পিএইচপি তে বিদ্যমান নেই। এছাড়াও, দয়া করে আপনার কোডটি কী করে এবং কীভাবে এটি কাজ করে তা ব্যাখ্যা করুন । আপনাকে ধন্যবাদ
পিটার গুজন

আমি সবেমাত্র কোডটি সম্পাদনা করেছি। এটির কার্যকারী কোড। এই কোডটি চেষ্টা করুন।
সারথ 8

2
দয়া করে আমার মন্তব্যটি আবার পড়ুন, তবে সিনট্যাক্স অংশটি এড়িয়ে যান। ডাম্পিং কোড কোনও মানের উত্তর নয়। আপনার কোডটি কীভাবে কাজ করে এবং এটি কী করে তার জন্য দয়া করে একটি ব্যাখ্যা যুক্ত করুন
পিটার গুজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.