Полагаю, это потому, что в Wordpress уже есть встроенный механизм AJAX, и он мешает вам реализовать его самостоятельно. На этой странице объясняется, как добавить AJAX в плагины:
http://codex.wordpress.org/AJAX_in_Plugins
Вот фрагмент страницы:
Аякс на стороне администрации
Поскольку Ajax уже встроен в основные экраны администрирования WordPress, добавить дополнительные функциональные возможности Ajax на стороне администрирования в ваш плагин довольно просто, и в этом разделе описывается, как это сделать.
Вот краткий пример. Все это будет в одном файле.
Сначала добавьте JavaScript, который будет запускать запрос AJAX:
<?php
add_action('admin_print_scripts', 'my_action_javascript');
function my_action_javascript() {
?>
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: 'my_action',
whatever: 1234
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
$.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
</script>
<?php
}
Затем установите функцию PHP, которая будет обрабатывать этот запрос:
<?php
add_action('wp_ajax_my_action', 'my_action_callback');
function my_action_callback() {
global $wpdb; // this is how you get access to the database
$whatever = intval( $_POST['whatever'] );
$whatever += 10;
echo $whatever;
die(); // this is required to return a proper result
}
Вот и все! Вам нужно будет добавить несколько деталей, таких как проверка ошибок и проверка того, что запрос пришел из правильного места (с помощью check_ajax_referer ()), но, надеюсь, приведенного выше примера будет достаточно, чтобы вы начали работать с собственным плагином Ajax на стороне администратора. ,
ПРИМЕЧАНИЕ. Начиная с версии 2.8, глобальная переменная javascript ajaxurl может использоваться, если вы хотите отделить свой код javascript от файлов php на файлы только javascript. Это верно только для администрации.