如何添加AJAX到WordPress主题(How to add ajax to wordpress

2019-07-29 09:08发布

我已经得到了我现在被困在几天的一个问题...我试图用一个简单的ajaxPOST功能将数据发送到一个MySQL数据库(未WP数据库)。

此代码位于主题为“单post.php中”内,因为它必须每一个岗位前进行检查。

$.ajax({ url: 'library/functions/admin_checkuser.php',
     data: {action: userID},
     type: 'post',
     success: function(output) {
                  alert(output);
     }
});

我简单地发送一个变量到“admin_checkuser.php”脚本,后者又调用另一个脚本,使数据库上的操作。

这是“admin_checkuser”的代码:

$userid = $_POST['action'];

echo $userid;//for testing
$oMySQL = new MySQL();
$query = "Select * FROM videotable WHERE uid = '$userid'";
$oMySQL->ExecuteSQL($query);
$bb = $oMySQL->iRecords;
$aa = $oMySQL->aResult;
echo $bb;

if ($bb == 0){
$query = "INSERT INTO videotable VALUES ('','$userid','true')";
$oMySQL->ExecuteSQL($query);
echo 'true';
    exit();

}else{
$sharing = mysql_result($aa,0,"share");
echo $sharing;
exit();

}

但我不认为呼叫经历的脚本。 这些脚本在那里的WordPress外测试,没有工作,所以它必须在WordPress阻断Ajax调用的东西。 顺便说一句,我试着放置“admin_checkuser.php”在许多不同势文件夹,但没有奏效。

提前致谢。

Answer 1:

您应该检查你的网址为您的Ajax调用。

也许使用完整的网址,而不是一个相对的。

这可能是因为你的主题的位置,使URL不正确。 我假设你的Ajax代码在你的主题文件夹中。

有迹象表明,获得主题目录中的一些WordPress的功能。

例如,如果你在这个网页http://yourwebpage/test/然后Ajax调用会去这里http://yourwebpage/test/library/functions/admin_checkuser.php 。 这一点我认为是不正确的位置。

这就是为什么你需要绝对的网址添加到您的脚本。 而如果是在你的主题,你可以使用此方法get_template_directory_uri()来获得模板目录。

在这里看到: http://codex.wordpress.org/Function_Reference/get_template_directory_uri



Answer 2:

你的时候使用内置的WordPress的AJAX请求好得多。

因此,在你的主题functions.php文件,添加你要调用的函数,例如:

function checkUser() {

    $userid = $_POST['user']; //validation also :)
    $oMySQL = new MySQL();
    $query = "Select * FROM videotable WHERE uid = '$userid'";
    $oMySQL->ExecuteSQL($query);
    $bb = $oMySQL->iRecords;
    $aa = $oMySQL->aResult;
    echo $bb;

    if ($bb == 0){
    $query = "INSERT INTO videotable VALUES ('','$userid','true')";
    $oMySQL->ExecuteSQL($query);
    echo 'true';
        exit();

    } else {
    $sharing = mysql_result($aa,0,"share");
    echo $sharing;
    exit();

    }
}

在这之后,你所连接到内置的AJAX系统添加你的钩子

add_action('wp_ajax_check_user', 'checkUser');
add_action('wp_ajax_nopriv_check_user', 'checkUser');

wp_ajax_nopriv_%s允许它从前端被调用。

然后,在你的JavaScript文件,你就火了你的Ajax请求。

$.post(ajaxurl, { action: 'check_user', user: userId }, function(output) {
     alert(output);
 });

如果ajaxurl未定义,你需要在你的模板文件中,这样的事情应该工作来创建它,但也有其他方式。

add_action('wp_head','ajaxurl');
function ajaxurl() {
?>
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
<?php
}

WordPress的后端的不休息。

它发生在AJAX请求通过了行动,查找对应的`wp_ajax(_nopriv)_%s钩,然后调用分配给钩子函数。

它也将通过无论是在$_POST$_GET根据AJAX请求的类型。

你可以阅读一些关于使用AJAX WordPress里 。



文章来源: How to add ajax to wordpress theme