Agregué un botón personalizado al editor TinyMCE, y quiero abrir el Thickbox de WP cuando hago clic en él.
¿Cómo puedo hacer que la tb_show()
función cargue el contenido que quiero con ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Aquí hay algunos de los códigos de complementos del editor que estoy usando:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
Entonces la OpenMyThickbox
función javascript debería hacer lo que quiero:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Respuestas:
El segundo parámetro para
tb_show
es la URL, por lo que querrá usar algo como ...Supongo que debe pasar la acción y cualquier consulta adicional de forma manual (según lo anterior), de lo contrario, su solicitud es simplemente para
admin-ajax.php
, cuando lo que está buscando es algo similar a ...admin-ajax.php?action=getTheContent&someothervar=someothervalue
, de ahí eladd_query_arg
uso anterior. .Para aclaraciones:
La siguiente llamada a
add_query_arg
...Es equivalente y producirá ...
¡Sin embargo!
Después de haberme explicado, me he dado cuenta de que no queremos la URL absoluta y, por lo tanto, no necesitamos la llamada
admin_url
allí. El código debería ser en su lugar.Entonces la URL resultante se parece a esto ...
Funciones a las que se hace referencia en los ejemplos de código anteriores:
Agregar consulta Arg
http://codex.wordpress.org/Function_Reference/add_query_arg
URL del administrador
http://codex.wordpress.org/Function_Reference/admin_url
fuente
$_get['action']
porque se busca la llamada ajax de WordPress$_post['action']
? o estoy equivocado?$_POST
o$_REQUEST
dentro de una devolución de llamada ajax, a menos que establezca explícitamente su función de solicitud de ajax para usarget
en su lugar, en el contexto de una llamada de caja gruesa, usamos una cadena de consulta, que aún debería aparecer en$_REQUEST
(porque eso generalmente contiene ambos$_GET
y$_POST
) ..add_query_arg
enviarán los argumentos agregados como una publicación o recibo?add_query_arg
se anexa una cadena (de una URL) con parámetros de consulta, no se hace ningún envío, así que no estoy seguro de entender su pregunta ..Desorganizar JavaScript y PHP no es muy inteligente. Esta respuesta solo confunde.
tb_show es javascript add_query_arg es PHP
entonces esta solución solo es válida en PHP y el código apropiado es
Y en javascript no es válido ya que no podemos usar add_query_arg
fuente
<?php ?>
etiquetas? Si eso es todo lo que desea señalar, edite la solución para corregirlo. No es necesario agregar una respuesta separada para explicar lo que está mal con otra respuesta. Es por eso que las ediciones de la comunidad son apreciadas.