我正在写一个Wordpress MU插件,它包括一个链接,每个帖子,我想用ajax来调用其中一个插件功能,当用户点击这个链接,然后动态更新链接文本的输出该功能。Wordpress:如何通过ajax调用插件函数?
我被ajax查询卡住了。我有这种复杂的,明显的黑客方式来做到这一点,但它并不完美。在插件中包含ajax功能的“正确”或“wordpress”方式是什么?
(我现在的黑客代码如下。当我点击链接生成我没有得到相同的输出我在wp页面获得,当我直接去采样ajax.php在我的浏览器。)
我有我的代码[1]设置如下:
MU-插件/ 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-插件/样品/试样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-插件/样品/样本ajax.php:
<?php
if (!function_exists('add_action')) {
require_once("../../../wp-config.php");
}
if (isset($sample_plugin)) {
$sample_plugin->doAjax();
} else {
echo "unset";
}
?>
[1]注:下面的教程让我这么远,但我在这一点难倒。 http://www.devlounge.net/articles/using-ajax-with-your-wordpress-plugin
我忘了补充一点,管理-ajax.php负责加载整个WordPress环境,所以你不必担心在你的插件中包含任何文件。 – 2010-05-26 13:24:45
您的原始答案很棒。感谢您向我展示在wp中执行ajax的正确方法。您的解释清楚了我在阅读的其他代码中看到的内容。 注意:我也有一个javascript范围的错误,我在问题中修正了上面的问题,所以它可能是一个更有用的wp引用问题,而不是'修复我特定的愚蠢bug'问题。(在ajax调用的成功fn中引用'this')。 – Bee 2010-05-26 14:44:36
John P是死对头,我道歉,我的解决方案是**不是唯一的方法,但它是一种方法,我觉得很容易快速AJAX,而不必自己加载WordPress。 – TheDeadMedic 2010-05-26 15:28:59