Wordpress - How to handle multiple instance of "send_to_editor" js function
only overwrite the send_to_editor function when your link or button is click but store the old function to restore it so try this on a click event:
//store old send to editor function
window.restore_send_to_editor = window.send_to_editor;
//overwrite send to editor function
window.send_to_editor = function(html) {
var imgurl = jQuery('img',html).attr('src');
current_item.siblings('.upload_image').val(imgurl);
current_item.parent().prepend('<div><img width="300" src="'+imgurl+'" alt="banner image" /></div>');
tb_remove();
//restore old send to editor function
window.send_to_editor = window.restore_send_to_editor;
}
My approach was similer to @Bainternet's. The circumstances were slightly different however. Long story short, I had multiple buttons that opened the Add Media window and it was breaking the default TinyMCE functionality.
Create an object that stores 2 items:
var $state_manager = { active_item : 'null', default_send_to_editor: window.send_to_editor }
Custom buttons will change the value of active_item when clicked:
$('.button').click(function(){ $state_manager.active_item = $(this).attr('data-unqiue-id'); // open the window and do whatever else you need })
Check the status of active_item and either do custom work or call the stored default function and set active_item to null once done.
window.send_to_editor = function( html ) { if($state_manager.active_item === 'null') { //call the default $state_manager.default_send_to_editor( html ); }else{ //do some custom stuff here being sure to reset // active_item to 'null' once completed $state_manager.active_item = 'null'; } }
A benefit of storing the active_item is to target different input fields and populating them with the url to the uploaded item.