web-dev-qa-db-ja.com

アップロードが完了した直後にmedia-upload thickboxを閉じますか?

私はWP独自のメディアアップロード機能を使ってフロントエンドのアップローダに取り組んでいます。タブを削除したり、ユーザーにとって不要な情報を削除したりするなど、UIに関するいくつかの事項を単純化したいだけであることを除けば、すべて問題ありません。最も重要なのは、アップロードが完了しファイルが整理されたら、Upload Thickboxを魔法のように閉じたいということです。

私はadd_attachmentフックを知っていて、ImageMagick処理を行うためにすでにそれを使っていますが、ファイルがアップロードされるたびに起動するので、これはあまりにもやり過ぎです。

コアを介して検索すると、 wp-includes/js/swfupload/handlers.dev.js になり、232行目にこれがあります。

function uploadComplete(fileObj) {
    // If no more uploads queued, enable the submit button
    if ( swfu.getStats().files_queued == 0 ) {
        jQuery('#cancel-upload').prop('disabled', true);
        jQuery('#insert-gallery').prop('disabled', false);
    }
}

これはまさに私がフックしたいところなので、送信ボタンを有効にする代わりにTB_close()を起動するだけです。

これはどんな方法でもできますか?

2
moraleida

これは以下のように簡単に解決されました。

  1. カスタムの.jsスクリプトをメディアアップロードのthickboxに接続して、iFrame内で実行されるようにします。

    function admin_styles_scripts_media_upload() {
        wp_register_script('mediajs', get_template_directory_uri().'/js/button.js', array('jquery'), true);
        wp_enqueue_script('mediajs');
    
    }
    add_action('admin_print_scripts-media-upload-popup','admin_styles_scripts_media_upload');
    ?>
    
  2. スクリプトを使用してデフォルトの「保存」ボタンをカスタムのものに置き換え、そこからself.parent.tb_removeを呼び出します。

    jQuery(document).ready(function() {
    
        jQuery('<a href="#" id="back_to_admin" class="button">Voltar para Edição</a>').insertAfter('.ml-submit');   
        jQuery('.savebutton.ml-submit').detach();
        jQuery('a.toggle').live("remove");
    
        jQuery('#back_to_admin').live('click',function() {
    
            parent.uploadedImages();
            self.parent.tb_remove();
    
    });
    
    });
    
1
moraleida