Я добавил пользовательскую кнопку в редактор TinyMCE, и я хочу открывать WP Thickbox, когда я нажимаю на нее.
Как я могу сделать так, чтобы 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 ?
}
используйте admin_url(‘admin-ajax.php’); для URL
Я получаю пустую страницу. даже если я ввожу google.com
Не будет ли это причиной того,
$_get['action']
что ajax-вызов WordPress ищет$_post['action']
? или я ошибаюсь?Обычно это будет
$_POST
или$_REQUEST
внутри обратного вызова ajax, если вы явно не настроите свою функцию запроса ajax для использованияget
вместо этого, в контексте вызова толстого ящика мы используем строку запроса, которая все еще должна отображаться$_REQUEST
(потому что обычно содержит как$_GET
и$_POST
)..Нет, я спрашиваю, если я использую
add_query_arg
, будут ли добавленные аргументы отправлены в виде сообщения или получены?Кроме того,
add_query_arg
добавляет строку (URL) с параметрами запроса, она не отправляет, поэтому я не уверен, что понимаю ваш вопрос.Обновил мой ответ..
Чем это отличается от решения, кроме того, что в
<?php ?>
нем есть теги? Если это все, что вы хотите указать, то, пожалуйста, внесите изменения в решение, чтобы исправить его. Не нужно добавлять отдельный ответ, чтобы объяснить, что не так с другим ответом. Вот почему правки сообщества приветствуются.@kaiser Правки, изменяющие смысл поста, обычно не приветствуются. Как отдельный ответ это нормально.
@toscho И как именно это меняет смысл ? Имо это исправление или добавление недостающих битов.
Байен был прав, указав на ошибку здесь, я смешивал PHP и Javascript, я действительно должен был заметить это раньше. Я внес необходимые изменения в свой ответ, и спасибо за отзыв (мне нравится знать, когда я делаю ошибки).
Второй параметр
tb_show
— это URL-адрес, поэтому вы можете использовать что-то вроде..Я предполагаю, что вам нужно передать действие и любые дополнительные переменные запроса вручную (как указано выше), иначе ваш запрос просто для
admin-ajax.php
, когда вы ищете что-то вроде…admin-ajax.php?action=getTheContent&someothervar=someothervalue
, следовательно,add_query_arg
использование выше..В целях разъяснения:
Следующий звонок в
add_query_arg
…Эквивалентно и будет производить…
Однако!
Теперь, объяснив себя, я пришел к выводу, что нам не нужен абсолютный URL-адрес и, следовательно, нам не нужен вызов
admin_url
там. Вместо этого должен быть код.Таким образом, результирующий URL-адрес выглядит примерно так.
Функции, упомянутые в приведенных выше примерах кода:
Добавить аргумент запроса
http://codex.wordpress.org/Function_Reference/add_query_arg
URL-адрес администратора
http://codex.wordpress.org/Function_Reference/admin_url
Путать javascript и PHP не очень умно. Этот ответ только смутит.
tb_show — это javascript, add_query_arg — это PHP
поэтому это решение действительно только в PHP, и правильный код
А в javascript вообще не действует, так как мы не можем использовать add_query_arg