J'écris un plugin Wordpress MU, il inclut un lien avec chaque poste et je veux utiliser ajax pour appeler l'une des fonctions plugin lorsque l'utilisateur clique sur ce lien, puis mettre à jour dynamiquement le lien texte avec sortie de cette fonction.Wordpress: comment appeler une fonction plugin avec un appel ajax?
Je suis coincé avec la requête ajax. J'ai cette façon compliquée, clairement bidouillante, de le faire, mais ça ne marche pas vraiment. Quelle est la manière «correcte» ou «wordpress» d'inclure la fonctionnalité ajax dans un plugin?
(Mon code actuel de hack est ci-dessous. Lorsque je clique sur le lien Générer je ne reçois pas la même sortie que je reçois dans la page wp que quand je vais directement à l'échantillon-ajax.php dans mon navigateur.)
J'ai mon code [1] mis en place comme suit:
mu-plugins/sample.php:
<?php
/*
Plugin Name: Sample Plugin
*/
if (!class_exists("SamplePlugin")) {
class SamplePlugin {
function SamplePlugin() {}
function addHeaderCode() {
echo '<link type="text/css" rel="stylesheet" href="'.get_bloginfo('wpurl').
'/wp-content/mu-plugins/sample/sample.css" />\n';
wp_enqueue_script('sample-ajax', get_bloginfo('wpurl') .
'/wp-content/mu-plugins/sample/sample-ajax.js.php',
array('jquery'), '1.0');
}
// adds the link to post content.
function addLink($content = '') {
$content .= "<span class='foobar clicked'><a href='#'>click</a></span>";
return $content;
}
function doAjax() { //
echo "<a href='#'>AJAX!</a>";
}
}
}
if (class_exists("SamplePlugin")) {
$sample_plugin = new SamplePlugin();
}
if (isset($sample_plugin)) {
add_action('wp_head',array(&$sample_plugin,'addHeaderCode'),1);
add_filter('the_content', array(&$sample_plugin, 'addLink'));
}
mu-plugins/échantillon/échantillon ajax.js.php:
<?php
if (!function_exists('add_action')) {
require_once("../../../wp-config.php");
}
?>
jQuery(document).ready(function(){
jQuery(".foobar").bind("click", function() {
var aref = this;
jQuery(this).toggleClass('clicked');
jQuery.ajax({
url: "http://mysite/wp-content/mu-plugins/sample/sample-ajax.php",
success: function(value) {
jQuery(aref).html(value);
}
});
});
});
mu-plugins/échantillon/échantillon ajax.php:
<?php
if (!function_exists('add_action')) {
require_once("../../../wp-config.php");
}
if (isset($sample_plugin)) {
$sample_plugin->doAjax();
} else {
echo "unset";
}
?>
[1] Note: Le tutoriel suivant m'a loin, mais je suis perplexe à ce moment. http://www.devlounge.net/articles/using-ajax-with-your-wordpress-plugin
J'ai oublié d'ajouter que admin-ajax.php prend soin de charger l'ensemble de l'environnement WordPress, donc vous n'avez pas besoin de vous soucier d'inclure des fichiers dans votre plugin. –
Votre réponse originale était géniale. Merci de me montrer la bonne façon de faire ajax en wp. Votre explication rend clair ce que j'ai vu dans d'autres codes que j'ai lus. Note: J'ai également eu une erreur de cadrage javascript que j'ai corrigée ci-dessus dans la question, donc cela pourrait être une question de référence wp plus utile qu'une question de 'corriger mon bogue spécifique'.(faisait référence 'ceci' dans le succès fn pour l'appel ajax). – Bee
John P est mort, je m'excuse, ma solution n'est pas ** le seul moyen, mais c'est une méthode que je trouve facile pour AJAX rapide, sans avoir à charger WordPress moi-même. – TheDeadMedic