5

我写了一个 wordpress 插件,女巫在我的模板中附加了一些评论功能。所有的东西都应该通过 ajax 传输到 wordpress 数据库中。

问题是 - ajax 处理程序需要一个 php 文件来捕获查询

if(isset($_POST['name'], $_POST['title'], $_POST['description'])) { 

 // do something with wordpress actions, e.g. get_current_user, $wpdb

}

在用户传输查询时,ajax 处理程序调用 php 文件,如下所示:

$('#ajax_form').bind('submit', function() {
    var form = $('#ajax_form');
    var data = form.serialize();
    $.post('../wp-content/plugins/test/getvars.php', data, function(response) {
        alert(response);           
    });
    return false; 

getvars.php不知道 wordpress 环境,因为它是直接从用户提交调用的,我认为添加 wordpress 环境类和包含不是好的样式

还有其他方法吗?感谢您的支持。

4

1 回答 1

9

是的,使用内置的 wordpress ajax 操作:

您的 jquery 将如下所示:

$('#ajax_form').bind('submit', function() {
    var form = $('#ajax_form');
    var data = form.serialize();
    data.action = 'MyPlugin_GetVars'
    $.post('/wp-admin/admin-ajax.php', data, function(response) {
        alert(response);           
    });
return false; 

您的插件代码类似于:

add_action("wp_ajax_MyPlugin_GetVars", "MyPlugin_GetVars");
add_action("wp_ajax_nopriv_MyPlugin_GetVars", "MyPlugin_GetVars");

function MyPlugin_GetVars(){
    global $wpdb;
    // use $wpdb to do your inserting

    //Do your ajax stuff here
    // You could do include('/wp-content/plugins/test/getvars.php') but you should
    // just avoid that and move the code into this function
}
于 2013-03-27T21:50:07.207 回答