So fügen Sie Ajax zum Wordpress-Thema hinzu

7

Ich habe ein Problem, an dem ich seit Tagen festhalte ... Ich versuche, eine einfache ajaxPOST-Funktion zu verwenden, um Daten an eine MySQL-Datenbank (nicht WP-Datenbank) zu senden.

Dieser Code befindet sich in "single-post.php" im Theme, da er vor jedem Post überprüft werden muss.

%Vor%

Ich sende einfach eine Variable an ein Skript "admin_checkuser.php", das wiederum ein anderes Skript aufruft, das Aktionen für die Datenbank ausführt.

Dies ist der Code für "admin_checkuser":

%Vor%

Aber ich glaube nicht, dass die Anrufe zum Skript gehen. Diese Skripte wurden außerhalb von WordPress getestet und funktionierten, also muss es in WordPress etwas sein, das den Ajax-Aufruf blockiert. BTW, ich habe versucht, die "admin_checkuser.php" in vielen verschiedenen Ordnern, aber nichts funktioniert.

Vielen Dank im Voraus.

    
user1108310 14.05.2012, 18:31
quelle

2 Antworten

2

Sie sollten Ihre URL für Ihren Ajax-Anruf überprüfen.

Vielleicht die volle URL anstelle der relativen verwenden.

Es könnte sein, dass aufgrund der Position Ihres Themas die URL nicht korrekt ist. Ich nehme an, dass Ihr Ajax-Code in Ihrem Themenordner ist.

Es gibt einige Wordpress-Funktionen, die das Themenverzeichnis bekommen.

Wenn Sie zum Beispiel auf dieser Seite http://yourwebpage/test/ haben, wird der Ajax-Aufruf hier gehen http://yourwebpage/test/library/functions/admin_checkuser.php . Dies nehme ich an, wäre der falsche Ort.

Deshalb müssen Sie Ihrem Skript die absolute URL hinzufügen. Und wenn es in Ihrem Thema ist, können Sie diese Methode get_template_directory_uri() verwenden, um das Vorlagenverzeichnis zu erhalten.

Siehe hier: Ссылка

    
Gohn67 14.05.2012, 18:52
quelle
24

Sie sind viel besser dran mit der integrierten Wordpress AJAX-Anfrage.

Fügen Sie in Ihrer theme functions.php -Datei Ihre aufzurufende Funktion hinzu, zum Beispiel:

%Vor%

Danach fügen Sie Ihren Hook mit Verbindungen zum eingebauten AJAX System hinzu

%Vor%

wp_ajax_nopriv_%s erlaubt den Aufruf vom Frontend.

Und dann, in Ihrer Javascript-Datei, feuern Sie einfach Ihre Ajax-Anfrage ab.

%Vor%

Wenn ajaxurl nicht definiert ist, müssen Sie es in Ihrer Vorlagendatei erstellen. So etwas sollte funktionieren, aber es gibt andere Möglichkeiten.

%Vor%

Backend von Wordpress erledigt den Rest.

Er nimmt die in der AJAX-Anforderung übergebene Aktion, sucht nach dem entsprechenden 'wp_ajax(_nopriv)_%s -Hook und ruft dann die Funktion auf, die dem Hook zugewiesen ist.

Es wird auch entweder $_POST oder $_GET abhängig vom Typ der AJAX-Anfrage übergeben.

Sie können ein wenig mehr über die Verwendung von AJAX in Wordpress lesen.

    
Stoosh 14.05.2012 19:13
quelle

Tags und Links