Dodałem niestandardowy przycisk do edytora TinyMCE i chcę otworzyć Thickbox WP po kliknięciu na niego.
Jak mogę to zrobić, aby tb_show()
funkcja ładowała żądaną zawartość za pomocą ajax?
// the ajax
add_action('wp_ajax_getTheContent', 'getTheContent');
function getTheContent(){
echo 'weqwtegeqgr'; // <- this should be displayed in the TB
die();
}
Oto niektóre kody wtyczek edytora, których używam:
init : function(ed, url) {
ed.addButton('do_stuff', {
title : 'Do Stuff',
image : url + '/icon.gif',
onclick : function() {
OpenMyThickbox('do_stuff');
}
});
...
Więc OpenMyThickbox
funkcja javascript powinna robić to, co chcę:
function OpenMyThickbox(tag){
tb_show(tag, '...'); // <- how to load content trough ajax here ?
}
Odpowiedzi:
Drugi parametr
tb_show
to URL, więc będziesz chciał użyć czegoś takiego jak ...Sądzę, że musisz ręcznie przekazać akcję i wszelkie dodatkowe zmienne zapytania (jak wyżej), w przeciwnym razie twoja prośba jest po prostu
admin-ajax.php
, gdy to, czego szukasz, jest zgodne z ...admin-ajax.php?action=getTheContent&someothervar=someothervalue
, stądadd_query_arg
użycie powyżej. .Dla wyjaśnienia:
Następujące wezwanie do
add_query_arg
...Jest równoważny i wyprodukuje ...
Jednak!
Po wyjaśnieniu się doszedłem do wniosku, że nie chcemy bezwzględnego adresu URL, a zatem nie potrzebujemy tam wezwania
admin_url
. Zamiast tego powinien być kod.Tak powstały adres URL wygląda mniej więcej tak ...
Funkcje przywołane w powyższych przykładach kodu:
Dodaj Argument zapytania
http://codex.wordpress.org/Function_Reference/add_query_arg
Adres URL administratora
http://codex.wordpress.org/Function_Reference/admin_url
źródło
$_get['action']
dlatego, że szuka połączenia wywoływanego przez WordPress ajax$_post['action']
? czy się mylę?$_POST
lub$_REQUEST
wewnątrz niego, chyba że jawnie ustawisz funkcję żądania ajax, abyget
zamiast tego używała , w kontekście wywołania typu „box ”używamy ciągu zapytania, który powinien wciąż się pojawiać$_REQUEST
(ponieważ zwykle zawiera on zarówno$_GET
i$_POST
) ..add_query_arg
, czy dodane argumenty zostaną wysłane jako post, czy otrzymają?add_query_arg
dołącza ciągu (adresu URL) z parametrami zapytania, nie wysyła żadnych wiadomości, więc nie jestem pewien, czy rozumiem twoje pytanie.Bałagan w javascript i PHP nie jest zbyt sprytny. Ta odpowiedź tylko myli.
tb_show to javascript add_query_arg to PHP
więc to rozwiązanie jest poprawne tylko w PHP, a poprawny kod to
I w javascript w ogóle nie jest poprawny, ponieważ nie możemy użyć add_query_arg
źródło
<?php ?>
tagi? Jeśli to wszystko, na co chcesz zwrócić uwagę, dokonaj edycji rozwiązania, aby je poprawić. Nie trzeba dodawać osobnej odpowiedzi, aby wyjaśnić, co jest nie tak z inną odpowiedzią. Dlatego doceniane są zmiany wprowadzane przez społeczność.