Я добавил пользовательскую кнопку в редактор TinyMCE, и я хочу открыть Thickbox WP, когда я нажму на нее.
Как я могу сделать так, чтобы tb_show()
функция загружала содержимое, которое я хочу, с помощью ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Вот некоторый код плагина редактора, который я использую:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
Так что OpenMyThickbox
функция javascript должна делать то, что я хочу:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Ответы:
Вторым параметром для
tb_show
является URL, поэтому вы захотите использовать что-то вроде ..Я предполагаю, что вам нужно передать действие и любые дополнительные переменные запроса вручную (как указано выше), иначе ваш запрос просто для
admin-ajax.php
, когда то, что вы ищете, является чем-то вроде ...admin-ajax.php?action=getTheContent&someothervar=someothervalue
, отсюда иadd_query_arg
использование выше. ,В целях разъяснения:
Следующий звонок
add_query_arg
...Это эквивалентно и будет производить ...
Однако!
Объяснив себя, я пришел к выводу, что нам не нужен абсолютный URL-адрес, и, следовательно, нам не нужен звонок
admin_url
туда. Код должен быть вместо.Таким образом, полученный URL выглядит примерно так ...
Функции, указанные в приведенных выше примерах кода:
Добавить Query Arg
http://codex.wordpress.org/Function_Reference/add_query_arg
URL администратора
http://codex.wordpress.org/Function_Reference/admin_url
источник
$_get['action']
потому, что ищет ajax-вызов WordPress$_post['action']
? или я не прав?$_POST
или$_REQUEST
внутри обратного вызова ajax, как правило, если вы явно не установите свою функцию запроса ajax для использованияget
вместо нее, в контексте вызова Thickbox мы используем строку запроса, которая все равно должна отображаться в$_REQUEST
(потому что обычно содержит$_GET
и$_POST
) ..add_query_arg
будут ли добавленные аргументы отправлены как сообщение или получено?add_query_arg
добавляет строку (URL-адрес) с параметрами запроса, он не выполняет отправку, поэтому я не уверен, что понимаю ваш вопрос ..Испортить JavaScript и PHP не очень умно. Этот ответ только смущает.
tb_show - это JavaScript. add_query_arg - это PHP.
так что это решение действительно только в PHP и правильный код
А в javascript вообще недопустимо, так как мы не можем использовать add_query_arg
источник
<?php ?>
теги? Если это все, на что вы хотите обратить внимание, внесите изменения в решение, чтобы исправить это. Не нужно добавлять отдельный ответ, чтобы объяснить, что не так с другим ответом. Вот почему правки сообщества приветствуются.