Ich habe ein Skript, das ich über AJAX von meinem WordPress-Theme aus aufrufen möchte. Es basiert auf einigen zentralen WordPress-Funktionen, daher füge ich den WordPress-Blog-Header folgendermaßen hinzu:
define( 'WP_USE_THEMES', false );
require( '../../../../wp-blog-header.php' );
Irgendwann während der Verarbeitung von wp-blog-header.php
WordPress wird ein 404-Header gesetzt, der dazu führt, dass meine AJAX-Anforderung fehlschlägt, obwohl das von mir aufgerufene Skript vorhanden ist und Inhalt zurückgibt.
Ich habe seitdem status_header( 200 );
nach diesem Snippet hinzugefügt , das den Status-Header wieder auf 200 ändert und das Problem löst. Es fühlt sich jedoch sehr nach einem Hack an. Ich habe mich nur gefragt, ob es eine empfohlene Lösung für dieses Problem gibt.
Antworten:
Sie sollten einschließen
wp-load.php
, nichtwp-blog-header.php
(was nur für die Verwendung durch WordPress reserviert ist). Dies ist höchstwahrscheinlich die Ursache Ihres Problems.quelle
Ja, es gibt eine empfohlene Lösung für die Verwendung der WordPress-Funktion über AJAX, bei der die
wp_ajax
Hooks verwendet werden. Sie können ein sehr detailliertes Beispiel in meiner Antwort auf "Was ist die bevorzugte Methode zum Schreiben von AJAX-fähigen Plugins? " sehen.quelle
Haben Sie, anstatt WordPress in 'Lösung A' aufzunehmen, darüber nachgedacht, es umgekehrt zu machen, indem Sie die überlegene / einfachere WP AJAX-API verwenden und dann 'Lösung A' in WordPress aufnehmen?
Das Aufrufen von wp-blog-header.php für AJAX ist ein schwerwiegender Fehler. Ich kann nicht betonen, wie groß die Kopfschmerzen sind, die Sie einführen, was Sicherheit und Wartung betrifft (z. B. zeigt diese Frage etwas davon).
Was ist die bevorzugte Methode zum Schreiben von AJAX-fähigen Plugins?
Auch
wp-load.php
nicht einschließenwp-blog-header.php
quelle