J'essaie un peu d'Ajax (via jQuery) dans WordPress. Tout fonctionne correctement, mais pour une raison quelconque, je dois disposer de l'URL complète du fichier de gestionnaire PHP, même s'il se trouve dans le même répertoire que le script.
Voici le code:
$.post('http://full/url/to/file.php', $("#form").serialize(), function(data){
do stuff
...
});
Pourquoi ne puis-je pas simplement mettre "file.php" dans cela? Pourquoi a-t-il besoin de l'URL complète? Ou plus important encore, que puis-je mettre là-bas qui fonctionnerait sur n'importe quel site sans que l'utilisateur final ait à entrer l'URL complète à chaque fois?
P.S. J'ai lu le problème avec Ajax et le chemin d'accès à la page PHP mais je me suis un peu plus mélangé. J'ai également lu la page Ajax dans les plugins sur le codex WordPress, mais je ne voyais pas d'exemple pertinent à cet endroit. Je soupçonne que cela pourrait avoir quelque chose à voir avec wp_localise_script()
mais je ne suis pas sûr.
elle a besoin d'une URL complète car, même s'il s'agit du bon emplacement sur le back-end, ce n'est pas le même sur le front-end, à l'URL où votre page est finalement servie.
vous êtes sur le bon chemin avec wp_localize_script
. vous voulez mettre en file d'attente votre script ajax, puis passez l'URL ajax admin à wp_localize_script
:
function my_init_method(){
wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'js/my_ajax_script.js', array( 'jquery' ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}
add_action('init', 'my_init_method');
maintenant, dans votre script ajax, vous pouvez vous référer à MyAjax.ajaxurl
pour l'URL.
Cochez ce message pour une bonne rédaction sur l'utilisation correcte de ajax dans les plugins et les thèmes, c'est ce à quoi le WP Codex renvoie en tant que Exemple.