Ich habe dem TinyMCE-Editor eine benutzerdefinierte Schaltfläche hinzugefügt und möchte die Thickbox von WP öffnen, wenn ich darauf klicke.
Wie kann ich dafür sorgen, dass die tb_show()
Funktion den gewünschten Inhalt mit Ajax lädt?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Hier ist ein Teil des Editor-Plugin-Codes, den ich verwende:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
Die OpenMyThickbox
Javascript-Funktion sollte also tun, was ich will:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Antworten:
Der zweite Parameter für
tb_show
ist die URL, daher sollten Sie so etwas wie ... verwenden.Ich würde vermuten, dass Sie die Aktion und alle zusätzlichen Abfragevariablen manuell übergeben müssen (wie oben beschrieben), sonst ist Ihre Anfrage einfach für
admin-ajax.php
, wenn das, wonach Sie suchen, etwas in der Art von ... istadmin-ajax.php?action=getTheContent&someothervar=someothervalue
, daher dieadd_query_arg
obige Verwendung. .Zur Klarstellung:
Der folgende Aufruf an
add_query_arg
...Ist gleichbedeutend mit und wird produzieren ...
Jedoch!
Nachdem ich mich jetzt erklärt habe, ist mir klar geworden, dass wir die absolute URL nicht wollen und daher keinen Anruf benötigen
admin_url
. Der Code sollte stattdessen sein.Die resultierende URL sieht also ungefähr so aus.
Funktionen, auf die in den obigen Codebeispielen verwiesen wird:
Query Arg
hinzufügen http://codex.wordpress.org/Function_Reference/add_query_arg
Administrator-URL
http://codex.wordpress.org/Function_Reference/admin_url
quelle
$_get['action']
weil WordPress Ajax Call sucht$_post['action']
? oder liege ich falsch?$_POST
oder$_REQUEST
innerhalb eines Ajax-Rückrufs sein, es sei denn, Sie haben explizit festgelegt, dass Ihre Ajax-Anforderungsfunktionget
stattdessen verwendet wird. Im Kontext eines Thickbox-Aufrufs verwenden wir eine Abfragezeichenfolge, die weiterhin in angezeigt werden sollte$_REQUEST
(da dies normalerweise sowohl$_GET
als als auch enthält$_POST
) ..add_query_arg
die hinzugefügten Argumente als Post verschicke oder bekomme?add_query_arg
hängt eine Zeichenfolge (einer URL) mit Abfrageparametern an, es wird nichtJavascript und PHP durcheinander zu bringen ist nicht sehr klug. Diese Antwort verwirrt nur.
tb_show ist Javascript add_query_arg ist PHP
Diese Lösung ist also nur in PHP gültig und der richtige Code ist
Und in Javascript ist überhaupt nicht gültig, da wir add_query_arg nicht verwenden können
quelle
<?php ?>
Tags enthält? Wenn das alles ist, worauf Sie hinweisen möchten, nehmen Sie bitte eine Änderung an der Lösung vor, um sie zu korrigieren. Sie müssen keine separate Antwort hinzufügen, um zu erklären, was mit einer anderen Antwort nicht stimmt. Aus diesem Grund werden Community-Änderungen geschätzt.