I added a custom button to the TinyMCE editor, and I want to open WP’s Thickbox when I click on it.
How can I make it so that the tb_show()
function loads the content I want with ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Here’s some of the editor plugin code I’m using:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
So the OpenMyThickbox
javascript function should do what I want:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
The second parameter for
tb_show
is the URL, so you’ll want to use something like..I’d guess you need to pass the action and any additional query vars manually(as per above), else your request is simply for
admin-ajax.php
, when what you are looking for is something along the lines of …admin-ajax.php?action=getTheContent&someothervar=someothervalue
, hence theadd_query_arg
usage above..For clarification:
The following call to
add_query_arg
…Is equivalent to and will produce …
However!
Having now explained myself i’ve come to realise we don’t want the absolute URL and thus don’t need the call to
admin_url
in there. The code should instead be.So the resulting URL looks something like this..
Functions referenced in the above code samples:
Add Query Arg
http://codex.wordpress.org/Function_Reference/add_query_arg
Admin URL
http://codex.wordpress.org/Function_Reference/admin_url
Messing up javascript and PHP is not very clever. This answer only confuse.
tb_show is javascript
add_query_arg is PHP
so this solution is only valid in PHP and the proper code is
And in javascript is not valid at all as we can’t use add_query_arg