私は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()
を起動するだけです。
これはどんな方法でもできますか?
これは以下のように簡単に解決されました。
カスタムの.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');
?>
スクリプトを使用してデフォルトの「保存」ボタンをカスタムのものに置き換え、そこから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();
});
});