Adicionei um botão personalizado ao editor TinyMCE e quero abrir a caixa de espessura do WP quando clicar nela.
Como posso fazer com que a tb_show()
função carregue o conteúdo que eu quero com o ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Aqui estão alguns dos códigos de plug-in do editor que estou usando:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
Portanto, a OpenMyThickbox
função javascript deve fazer o que eu quero:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Respostas:
O segundo parâmetro para
tb_show
é a URL, então você deve usar algo como ..Eu acho que você precisa passar a ação e todos os vars de consulta adicionais manualmente (conforme descrito acima); caso contrário, sua solicitação é simplesmente
admin-ajax.php
quando o que você está procurando é algo parecido com ...admin-ajax.php?action=getTheContent&someothervar=someothervalue
, daí oadd_query_arg
uso acima. .Para esclarecimentos:
A seguinte chamada para
add_query_arg
...É equivalente e produzirá ...
Contudo!
Tendo me explicado agora, percebi que não queremos a URL absoluta e, portanto, não precisamos da ligação
admin_url
. O código deveria ser.Portanto, o URL resultante se parece com isso ..
Funções referenciadas nos exemplos de código acima:
Adicionar Query Arg
http://codex.wordpress.org/Function_Reference/add_query_arg
URL do administrador
http://codex.wordpress.org/Function_Reference/admin_url
fonte
$_get['action']
porque a chamada ajax do WordPress procura$_post['action']
? ou eu estou errado?$_POST
ou$_REQUEST
dentro de um retorno de chamada ajax, a menos que você defina explicitamente sua função de solicitação ajaxget
, no contexto de uma chamada thickbox, usamos uma string de consulta, que ainda deve aparecer$_REQUEST
(porque geralmente contém ambos$_GET
e$_POST
) ..add_query_arg
, os argumentos adicionados serão enviados como uma postagem ou serão obtidos?add_query_arg
acrescenta um string (de um url) com parâmetros de consulta, ele não faz qualquer envio, então eu não tenho certeza se entendi sua pergunta ..Desarrumar o javascript e o PHP não é muito inteligente. Esta resposta apenas confunde.
tb_show é javascript add_query_arg é PHP
portanto, esta solução é válida apenas em PHP e o código adequado é
E em javascript não é válido, pois não podemos usar add_query_arg
fonte
<?php ?>
tags? Se é isso que você quer destacar, faça uma edição na solução para corrigi-la. Não é necessário adicionar uma resposta separada para explicar o que há de errado com outra resposta. É por isso que as edições da comunidade são apreciadas.