Я пишу плагин Wordpress MU, он включает ссылку с каждым сообщением, и я хочу использовать ajax для вызова одной из функций плагина, когда пользователь нажимает на эту ссылку, а затем динамически обновляет текст ссылки с выходом из эта функция.Wordpress: как вызвать функцию плагина с помощью вызова ajax?
Я застреваю с запросом ajax. У меня есть этот сложный, явно хакерский, способ сделать это, но он не совсем работает. Что такое «правильный» или «Wordpress» способ включения функции ajax в плагин?
(Мой текущий код хак ниже. Когда я нажимаю генерировать ссылку не получить тот же результат, я получаю на странице в.ч., как, когда я иду прямо в образец-ajax.php в браузере.)
Я получил свой код [1] устанавливается следующим образом:
мю-плагинов/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'));
}
мю-плагинов/образец/пример-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);
}
});
});
});
мю-плагинов/образец/пример-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, поэтому вам не нужно беспокоиться о включении любых файлов в ваш плагин. –
Ваш оригинальный ответ был замечательный. Спасибо, что показал мне правильный способ сделать ajax в wp. В вашем объяснении четко видно, что я видел в другом коде, который я прочитал. Примечание: У меня также была ошибка с оценкой javascript, которую я исправил выше в вопросе, поэтому он может быть более полезным справочным вопросом wp, чем вопрос «исправить мою конкретную тупую ошибку».(ссылался на «это» внутри успеха fn для вызова ajax). – Bee
John P мертв правильно, я извиняюсь, мое решение - это ** не ** единственный способ, но это метод, который я нахожу удобным для быстрого AJAX, без необходимости загружать WordPress самостоятельно. – TheDeadMedic