摘要:wordpress无刷新登录,想通过ajax读取用户提交的表单,结果被wp-login.php拒绝了,一开始一直在想解决...

wordpress无刷新登录,想通过ajax读取用户提交的表单,结果被wp-login.php拒绝了,一开始一直在想解决权限的问题,但是总是会去修改wp-login.php,后面找到了admin-ajax.php。

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

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

$admin_url=admin_url( ‘admin-ajax.php’ )

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

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

function dosome(){

$data = array(

‘info’=>’this is my test’,

‘success’ => true,

);

header( “Content-Type: application/json” );

echo json_encode($data);

}

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都会去查找并执行对应的处理代码。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐