通过 admin-ajax.php 自定义 WordPress 的 Ajax 请求

发布于 2019-03-09 09:53:37 字数 1659 浏览 3478 评论 0

如果你的模板需要有一些异步数据的操作,你可以在你的模板下面新建一个 ajax.php 文件,然后引入根目录的 wp-load.php 文件,然后就能使用 WordPress 的所有功能了。

通过 admin-ajax.php 自定义 WordPress 的 Ajax 请求

今天发现其实我们可以使用后台的 admin-ajax.php 实现我们的 Ajax 请求。

发送 Ajax 请求

下面是一个 Ajax 请求的示例:

var ajaxurl = '<?php echo admin_url('admin-ajax.php')?>';
$('#submit').click(function(e){      
  $.ajax({
    type:'post',
    url:ajaxurl,
    data:{
      'action':'handler',
      'a':$('#a').val(),
      'b':$('#b').val(),
      'c':$('#c').val()
    },
    cache:false,
    dataType:'json',
    success:function(result){
      $('.recordimg img').attr("src",result);
    },
    error:function(data){
      alert("err");
    }
  });
  return false;
});

Ajax 的请求地址是固定的,就是 admin_url('admin-ajax.php') 函数输出地址,data 字段是要发送的数据,里面必须包含 action 字段,并且这个 action 的值必须是一个名字 handler,后面编写钩子的时候需要用到。

处理 Ajax 请求

在 theme/functions.php 里添加如下代码:

function handler(){
    // to do
    wp_die();
}
add_action( 'wp_ajax_handler', 'handler' );
add_action( 'wp_ajax_nopriv_handler', 'handler' );

上面代码中的 handler 其实就是 Ajax 请求中的 action 参数值,钩子函数必须是 wp_ajax_* (这个是admin用户的权限)和 wp_ajax_nopriv_*(这个是普通用户的权限),最后 handler() 函数里必须有一个 echowp_die()die() 结束。并且 echo 的必须是 String 类型。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文