让AJAX在Wordpress中工作的问题

时间:2014-09-05 18:41:19

标签: php jquery ajax wordpress

我很确定这是我遗漏的一些非常基本的东西,但它让我疯狂。请帮帮我: - )

我正在尝试从我自己的wordpress插件中获得一个基本的AJAX调用。

我有两个文件:

BHA-class.php

<?php
add_action( 'admin_footer', '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>
<?
}
?>

bha-class-xhr.php

<?php
global $wpdb;

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
}

?>

事情正在发挥作用,AJAX调用已启动,并且调用了'bha-class-xhr.php。

然而我收到错误:

Got this from the server: <br />
<b>Fatal error</b>:  Call to undefined function add_action() in <b>/var/www/institutforgestaltanalyse.dk/public_html/wp-content/plugins/bha-member-system/include/bha-class-xhr.php</b> on line <b>4</b><br />

所以看起来我调用的xhr文件在Wordpress框架中无法识别。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

您好像是直接通过javascript调用bha-class-xhr.php文件。如果你需要WordPress,这不是正确的文件。

相反,如果需要,您应该对admin-ajax.php进行ajax调用,添加操作和其他参数。

类似的东西(取决于你的安装,我在这里使用GET而不是POST):

/wp-admin/admin-ajax.php?action=my_action_callback