Comment ajouter un nouvel onglet au gestionnaire de téléchargement multimédia avec un ensemble d'images personnalisé?

15

Je voudrais ajouter un nouvel onglet pour télécharger les images du gestionnaire et de la liste interne à partir de

theme_folder/images/patterns

J'ai essayé quelque chose comme ceci pour ajouter un onglet, mais cela ne fonctionne pas car il ajoute des onglets sur le côté du gestionnaire de médias, mais sur le téléchargement d'images, cet onglet n'est pas visible.

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

pour être précis, c’est là que je voudrais ajouter un nouvel onglet et dans cet onglet je voudrais lister les images du dossier de thèmes.

JesuisconscientquelegestionnairedemédiasJSdoitêtreréécritpourcela,maispourêtrehonnête,jenesaispasparoùcommencer.Ondiraitquejedoisécrireuntoutnouveaumodèlepourlegestionnairedemédiaafinderéalisercela.

J'aiétudiétouteslessuggestions,maispersonnenelitlaquestion.Commeconseillé"J'ai essayé quelque chose comme ceci pour ajouter un onglet, mais cela ne fonctionne pas car il ajoute des onglets du côté de Media Manager, mais sur le téléchargement d'images, cet onglet n'est pas visible."

Donc, pour l’instant, personne n’est capable de trouver la solution à ce problème.

    
posée Benn 24.04.2015 - 17:28

3 réponses

5

Selon WordPress, Codex , vous pouvez ajouter un onglet personnalisé dans l’éditeur de contenu multimédia comme suit:

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

J'espère que cela vous aidera.

    
réponse donnée Touqeer Shafi 05.06.2015 - 17:34
2

Ceci est un vieux fil, mais pour moi toujours aussi pertinent. J'ai été bidouiller et est venu avec ce code pour ajouter un onglet de média ici, peut-être que quelqu'un veut continuer pour savoir comment gérer le contenu de l'onglet? :)

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

Et ensuite le fichier 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
        }
    });
};

EDIT: D'accord alors. Pour gérer le contenu, je n'ai pas trouvé de moyen intéressant de le faire par wp.media. Ma solution actuelle consiste en deux lecteurs, un pour ouvrir la médiathèque et un pour cliquer dans le menu du routeur multimédia.

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

la fonction doMyTabContent (); est juste quelque chose comme:

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

Je suis très sûr que cela peut être fait d'une manière beaucoup plus délicate. Quiconque lira ceci et aura une meilleure solution, veuillez remplir :-)

    
réponse donnée gubbfett 09.09.2018 - 16:48
-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' );
    
réponse donnée sarath 05.06.2015 - 10:13

Lire d'autres questions sur les étiquettes