J'ai ajouté un bouton personnalisé à l'éditeur TinyMCE et je veux ouvrir Thickbox de WP lorsque je clique dessus.
Comment puis-je faire en sorte que la tb_show()
fonction charge le contenu que je veux avec ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Voici une partie du code du plugin de l'éditeur que j'utilise:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
La OpenMyThickbox
fonction javascript devrait donc faire ce que je veux:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Réponses:
Le deuxième paramètre pour
tb_show
est l'URL, vous voudrez donc utiliser quelque chose comme ..Je suppose que vous devez passer l'action et toutes les variables de requête supplémentaires manuellement (comme ci-dessus), sinon votre demande est simplement pour
admin-ajax.php
, lorsque ce que vous recherchez est quelque chose comme ...admin-ajax.php?action=getTheContent&someothervar=someothervalue
, d'où l'add_query_arg
utilisation ci-dessus. .Pour clarification:
L'appel suivant à
add_query_arg
...Est équivalent et produira ...
Pourtant!
Après m'être expliqué maintenant, je me suis rendu compte que nous ne voulons pas l'URL absolue et que nous n'avons donc pas besoin de l'appel
admin_url
là-dedans. Le code devrait plutôt l'être.L'URL résultante ressemble donc à ceci.
Fonctions référencées dans les exemples de code ci-dessus:
Ajouter un argument de requête
http://codex.wordpress.org/Function_Reference/add_query_arg
URL d'administration
http://codex.wordpress.org/Function_Reference/admin_url
la source
$_get['action']
parce que l'appel ajax WordPress recherche$_post['action']
? ou ai-je tort?$_POST
ou à l'$_REQUEST
intérieur d'un rappel ajax en général, sauf si vous définissez explicitement votre fonction de demande ajax à utiliser à laget
place, dans le contexte d'un appel de boîte épaisse, nous utilisons une chaîne de requête, qui devrait toujours apparaître dans$_REQUEST
(car elle contient généralement les deux$_GET
et$_POST
) ..add_query_arg
les arguments ajoutés seront-ils envoyés sous forme de message ou reçus?add_query_arg
un ni l'autre, ajoute une chaîne (d'une URL) avec des paramètres de requête, il ne fait aucun envoi, donc je ne suis pas sûr de comprendre votre question ..Gâcher javascript et PHP n'est pas très intelligent. Cette réponse ne fait que confondre.
tb_show est javascript add_query_arg est PHP
donc cette solution n'est valable qu'en PHP et le bon code est
Et en javascript n'est pas valide du tout car nous ne pouvons pas utiliser add_query_arg
la source
<?php ?>
étiquettes? Si c'est tout ce que vous voulez souligner, veuillez apporter une modification à la solution pour la corriger. Pas besoin d'ajouter une réponse distincte pour expliquer ce qui ne va pas avec une autre réponse. C'est pourquoi les modifications apportées à la communauté sont appréciées.