Özel resim kümesiyle medya yükleme yöneticisine yeni sekme nasıl eklenir?


18

'Dan yönetici ve liste içi resim yüklemek için yeni sekme eklemek istiyorum

theme_folder/images/patterns

Bir sekme eklemek için böyle bir şey denedim, ancak medya yöneticisinin yanına sekmeler eklediğinden ancak resim yüklemede bu sekme görünmediğinden benim için çalışmıyor.

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

tam olarak bu yeni bir sekme eklemek istiyorum ve bu sekmede tema klasöründen görüntüleri listelemek istiyorum.

resim açıklamasını buraya girin

Medya yöneticisi JS'nin bunun için yeniden yazılması gerektiğinin farkındayım ama dürüst olmak gerekirse nereden başlayacağımı bilmiyorum. Bunu başarmak için medya yöneticisi için tamamen yeni bir şablon yazmam gerekiyor gibi görünüyor.

Tüm önerilere gittim ama hiç kimse soruyu okumuyor gibi görünüyor. Önerildiği gibi "Bir sekme eklemek için böyle bir şey denedim, ancak medya yöneticisinin yanına sekmeler eklediğinden ancak resim yüklemesinde bu sekme görünmediğinden benim için çalışmıyor."

Şimdilik hiç kimse bunun için bir çözüm bulamıyor.

Yanıtlar:


6

Bu eski bir konu ama benim için hala o kadar alakalı. Kıpır kıpırdım ve buraya bir medya sekmesi eklemek için bu kodla geldim, belki birisi sekme için içeriğin nasıl işleneceği konusunda devam etmek ister? :)

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

Ve sonra js dosyası:

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

EDIT: Tamam, öyle. İçeriği işlemek için wp.media tarafından bunu yapmak için güzel bir yol bulamadım. Şu anki çözümüm, biri medya kütüphanesini açmak ve diğeri medya yönlendirici menüsüne tıklamak için olmak üzere 2 liseer;

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 () işlevi; sadece bir şeydir;

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

Bunun çok daha hassas bir şekilde yapılabileceğinden eminim. Bunu kim okursa ve daha iyi bir çözümü varsa, lütfen :-) doldurun


Bunun için thnx ona bakacaktır. Eski ya da değil asla çözülmedi. ve bu tam olarak prntscr.com/kse5yk istedi . İyi iş!
Benn

bu wordpress.stackexchange.com/a/190604/67176 ve sekme oluşturma işleminizi birleştirmeyi denediniz mi? Özellikle sekmeler aynı kimliğe sahipse çalışabileceğinden% 99 eminim.
Benn

1
Evet, önce bunu inceledim, ama bu çözümle birlikte gelen iframe çözümünün hayranı değilim. İframe mesajlaşma ile görüntü verilerini alma. İçeriği görüntülemek bir şeydir, ancak eylemleri işlemek başka bir şeydir. :) Belki bir şeyleri kaçırıyorum.
gubbfett

Merhaba @Benn yine wp.media kabuslarını yakaladı. Benim "doMyTabContent" yaptığım yukarıda sağlanan kod i sadece bir olayı tetikler. Örneğin: Bir gönderi yükleyin, öne çıkan resim ekle'yi tıklayın ve kapatın. Bu tıklamadan sonra yazı için medya ekleyin ve muhtemelen wp.media yeni bir durumda olduğundan (sekme hala oradadır) bir şey yüklemez. Burada nasıl hareket edeceğimi bilmiyorum. Sekme ekleme ve herhangi bir şekilde medya ekleme konusunda ilerleme kaydettiniz mi? Kod paylaşmak ister misiniz? :)
gubbfett

@gubbfett buna bir çözüm buldunuz mu?
RaajTram

5

WordPress Codex'a göre , medya yükleyiciye aşağıdaki gibi özel sekme ekleyebilirsiniz:

// 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>';
}

Umarım size yardımcı olur.


7
Açık olmak gerekirse, bu sekme kalıcı kutunun üst kısmına değil, sol kenar çubuğuna eklenir. Sekmeyi Medya Ekle sekmesinin üst kısmına eklemenin bir yolunu bulamadım. Ayrıca içerik bir iframe içine eklendiği için zaten mevcut css stilleri kullanmaya çalışırken sorunlar vardı. Bu muhtemelen görüntüleri doğru görüntülemek için kendi css'nizi eklemeniz gerektiği anlamına gelir. Ve sadece yanıtı tamamlamak için, görüntü klasörü içindeki tüm öğeleri almak için php scandir () işlevini kullanabilirsiniz.
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
Kodunuz sözdizimi hatalarıyla dolu. Kullandığınız sözdizimi php'de bulunmadığından lütfen uygun php sözdizimini kullanın. Ayrıca, lütfen kodunuzun ne yaptığını ve nasıl çalıştığını açıklayın . Teşekkür ederim
Pieter Goosen

Kodu yeni düzenledim. Bu kodu deneyin.
sarath

2
Lütfen yorumumu tekrar okuyun, ancak sözdizimi bölümünü atlayın. Boşaltma kodu kaliteli bir cevap değildir. Lütfen kodunuzun nasıl çalıştığına ve ne işe yaradığına ilişkin bir açıklama ekleyin
Pieter Goosen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.