使用jQuery为WordPress插件开发人员简化Ajax

我假设你知道如何编写WordPress插件,现在你想知道如何使用AJAX添加炫酷的功能,这会让你的插件看起来有点酷。

对于我的akWpUploder插件,我也面临着同样的问题。我搜索了一下,但找不到任何有趣的东西,或者应该说,将Ajax添加到我的插件的简单方法。所以我深入研究了WordPress代码库以寻求解决方案,因为WordPress的自动保存功能就是我想要使用的功能之一。

在那里我找到了我真正想要的东西,一种使用Ajax完成任务的非常简单的方法。

问题:在使用AJAX时如何在插件中使用WordPress函数

让我先解释一下这个问题,当我在开发插件时,我需要将照片数据插入到数据库中。要做到这一点,我需要使用wordpress数据库函数,但是按照我所知道的使用ajax的方式(即创建一个单独的php文件来处理ajax请求),这有点困难和混乱。它需要与数据库建立直接连接,或者包括WordPress配置文件。

我对这两个选项都不满意,我需要一个更简单的解决方案。

解决方案:admin-ajax.php和action hook wp_ajax_

正如我前面提到的,我深入WordPress,看看WP是如何使用Ajax来保存帖子的。

我找到的是这个代码。

      default :
	do_action( 'wp_ajax_' . $_POST['action'] );
 	die('0');

所以,现在我需要做的就是将我所有的Ajax请求发送到admin-ajax.php,提供一个‘action’,WordPress将调用附加到该钩子的函数。

很整洁,不是吗?现在我可以让我的插件变得简单了。

实施:示例

你可能会想“没关系,但你能给我举个例子吗?”

好的,我当然会的。

首先我们关注javascript,这里我使用的是jQuery,它是可用的最简单的javascript库。

  • 让我们包括jQuery:
<?php
echo'<script src="'.get_option('siteurl'). '/wp-content/plugins/jquery-1.2.3.min.js"> </script>';
  • 现在Ajax请求的代码:它们是需要注意的两件事。

    • “action”,它包含与“wp_ajax_”一起使用以创建WordPress挂钩的值。
    • 另一个是“cookie”,它包含验证你对admin-ajax.php的管理员访问权限所需的cookie。
<script>
 $.post(siteurl+"/wp-admin/admin-ajax.php", {action:"ak_attach", 'cookie': encodeURIComponent(document.cookie)},
 function(str)
{
      alert(str);
});

</script>

至此,事情的javascript部分就结束了。

现在,我们将在插件中处理此请求。

  • 因此,首先我们将创建响应Ajax请求的函数。你应该注意到,我在末尾使用了exit ,这是因为我希望脚本在这里结束,否则我的数据将为‘0’。
<?php
function ajaxResponse(){
global $wpdb; 	global $userdata;
get_currentuserinfo();
 echo "Hello ". $userdata->user_login;
 exit;
 }
  • 现在我们需要将此函数告知WordPress,因此我们将通过在上面的javascript代码中提供action参数,将此函数附加到我们创建的Hook上。
add_action('wp_ajax_ak_attach', 'ajaxResponse');

就这样了,我们完事了。

既然你知道了如何在编写插件时轻松使用Ajax,那就继续使用它吧。下载这个演示插件的代码,它显示了整个操作,并且可以作为模板。

注意:admin-ajax.php只允许管理员用户发布数据,这意味着它只能在WordPress的管理区域使用,不能用于一般场景。

发表评论

邮箱地址不会被公开。 必填项已用*标注