web-dev-qa-db-fra.com

Une page externe intégrée à WordPress renvoie une erreur 404

J'ai un script que je voudrais appeler via AJAX à partir de mon thème WordPress. Il repose sur certaines fonctions de base de WordPress. J'inclus donc l'en-tête de blog WordPress comme suit:

define( 'WP_USE_THEMES', false );
require( '../../../../wp-blog-header.php' );

Quelque part pendant le traitement de wp-blog-header.php, WordPress définit un en-tête 404, ce qui entraîne l'échec de ma demande AJAX, même si le script que j'appelle existe et renvoie du contenu.

Depuis, j'ai ajouté status_header( 200 ); après l'extrait de code qui modifie l'en-tête d'état à 200 et résout le problème. Cependant, cela ressemble beaucoup à un piratage. Je me demandais s'il existait une solution recommandée pour résoudre ce problème?

7
David Hancock

Vous devriez inclure wp-load.php, pas wp-blog-header.php (réservé à WordPress). C'est probablement la cause de votre problème.

3
shea

Oui, il existe une solution recommandée pour utiliser WordPress Function via AJAX et utilisant les crochets wp_ajax. vous pouvez voir un exemple très détaillé dans ma réponse à "Quelle est la méthode préférée pour écrire des plugins compatibles AJAX? "

1
Bainternet

Au lieu d'inclure WordPress dans 'Solution A', avez-vous envisagé de l'inverser, en utilisant l'API largement supérieure/plus simple WP AJAX et en incluant ensuite 'Solution A' dans WordPress?

Le fait d'appeler wp-blog-header.php pour AJAX est une grave erreur. Je ne saurais trop insister sur l'ampleur des maux de tête que vous introduisez sur le plan de la sécurité et de la maintenance (par exemple, cette question en montre une partie)

Quelle est la méthode préférée pour écrire des plugins compatibles AJAX?

Inclure également wp-load.php pas wp-blog-header.php

0
Tom J Nowell