wordpress 的ajax 接口:admin-ajax.php 的利用

【引子】

我想实现wordpress的无刷新登录,想到可以用ajax读取用户的提交的表单,然后post给wp-login.php处理,结果被wp-login.php拒绝了,报了权限错误,一开始一直在想解决权限的问题,但是总是会去修改wp-login.php(这样会破坏文件原来的结构,不是我想要的)。后面找到了admin-ajax.php。

【正文】

在wordpress上实现ajax,可以通过前端代码后/wp-admin/admin-ajax.php进行交互。

1.在php代码中的得到其地址:

<span style="font-size:18px;">$admin_url=admin_url( ‘admin-ajax.php’ )</span>

2.ajax的调用地址:http://域名/wp-admin/admin-ajax.php?action=***(get方式)

3.设计action处理函数,假设为dosome

<span style="font-size:18px;">function dosome(){
    $data = array(
        'info'=>'this is my test',
        'success' => true,
    );
    
    header( "Content-Type: application/json" );    
    echo json_encode($data);
}</span>

 4.挂接到系统上去

//wp_ajax_nopriv_ 是在没有登录的处理流程;wp_ajax_是登录后的处理流程
add_action( 'wp_ajax_nopriv_***', 'dosome' );
add_action( 'wp_ajax_***', 'dosome' );

5.编写前端代码:

jQuery.post(
       MyAjax.ajaxurl,
       {
            action : 'action的名字***',
       },
       function( response ) {
            alert( response );
       }
);

【原理分析】

请看admin-ajax.php中76行到96行


$_REQUEST['action']中存储的值就是$_POST['action']或$_GET['action'],

那么如果ajax请求“http://域名/wp-admin/admin-ajax.php”时,无论通过get还是post传递一个action的值,admin-ajaxadmin-ajax都会去查找并执行对应的处理代码。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dapeng-大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值