Ich schreibe ein Wordpress MU-Plugin, es enthält einen Link zu jedem Beitrag und ich möchte mit Ajax eine der Plugin-Funktionen aufrufen, wenn der Benutzer auf diesen Link klickt, und dann dynamisch den Link-Text mit der Ausgabe aktualisieren diese Funktion.Wordpress: Wie ruft man eine Plugin-Funktion mit einem Ajax-Aufruf auf?
Ich bin mit der Ajax-Abfrage fest. Ich habe diesen komplizierten, klar hack-ish, Weg, es zu tun, aber es funktioniert nicht ganz. Was ist der 'richtige' oder 'Wordpress' Weg um die Ajax Funktionalität in ein Plugin zu integrieren?
(Mein aktueller Hack Code ist unten. Wenn ich den Link generieren klicken wir nicht bekommen die gleiche Ausgabe ich in der wp Seite bekommen, als wenn ich direkt zu Probe-ajax.php in meinem Browser.)
ich meinen Code habe [1] wie folgt festgelegt:
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/Probe/sample-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/Probe/sample-ajax.php:
<?php
if (!function_exists('add_action')) {
require_once("../../../wp-config.php");
}
if (isset($sample_plugin)) {
$sample_plugin->doAjax();
} else {
echo "unset";
}
?>
[1] Hinweis: Das folgende Tutorial hat mich bis hierher, aber ich bin an dieser Stelle ratlos. http://www.devlounge.net/articles/using-ajax-with-your-wordpress-plugin
Datei habe ich vergessen, dass die Admin-ajax.php hinzufügen kümmert sich darum, die gesamte WordPress-Umgebung zu laden, sodass Sie sich keine Gedanken darüber machen müssen, irgendwelche Dateien in Ihr Plugin aufzunehmen. –
Ihre ursprüngliche Antwort war großartig. Danke, dass du mir den richtigen Weg gezeigt hast, in Wp Ajax zu machen. Ihre Erklärung macht deutlich, was ich in anderem Code gesehen habe, den ich gelesen habe. Hinweis: Ich hatte auch einen JavaScript-Scoping-Fehler, den ich oben in der Frage korrigiert habe, also könnte es eine nützlichere wp-Referenzfrage sein als eine 'meine spezifische dumb bug' Frage zu beheben.(bezog sich auf 'das' innerhalb des Erfolgs fn für den Ajax-Ruf). – Bee
John P ist tot richtig, ich entschuldige mich, meine Lösung ist ** nicht ** der einzige Weg, aber es ist eine Methode, die ich für schnelle AJAX einfach finde, ohne WordPress selbst laden zu müssen. – TheDeadMedic