WordPress主题或插件Ajax请求方法
文 / @UTHEME
有一个主题需要在文章页面提交Ajax请求,并在当前页面进行服务端处理,按照常规方法编写代码,结果总是返回404错误。
WordPress主题或插件Ajax请求的正确姿势是:通过admin-ajax.php页面提交。
服务端处理:
如果是主题开发,在functions.php中添加以下代码:
function funcname() { //服务端处理 } add_action('wp_ajax_funcname', 'funcname'); //已登录用户 add_action( 'wp_ajax_nopriv_funcnamer', 'funcname' ); //未登录用户
注意funcname为处理函数的名称,可以自定义。hook有两个,一个用于已登录用户,另一个用于未登录用户,两个钩子可以对应不同的函数,以便对不同用户作出不一样的处理,这里的示例对不同用户都作同样的处理。
需要特别注意钩子的名称为:
wp_ajax_处理函数的名称
未登录用户钩子的名称为:
wp_ajax_nopriv_处理函数的名称
前端脚本:
前端代码中的POST URL填写:
<?php echo admin_url("admin-ajax.php"); ?>
前端示例代码:
$.ajax({ cache: false, type: 'POST', dataType: 'json', url: '<?php echo admin_url("admin-ajax.php"); ?>', data: $('form').serialize(), async: true, success: function (data) { if (data.status == 'success') { } else { } }, error: function(e){ console.log(e.status + ':' + e.statusText); } });
服务端示例代码:
function my_func() { $name = $_POST['name']; die(json_encode(array('status' => 'success', 'info' => $name))); } add_action('wp_ajax_my_func', 'my_func'); add_action( 'wp_ajax_nopriv_my_func', 'my_func' );

相关文章
-
WordPress插件:All in One WP Security & Firewall 怎么样(附:AIOWPS拦截垃圾评论设置教程) 2023-01-26 21:51:51
-
在 PHP 中如何通过一行代码就交换两个变量的值 2023-01-26 00:18:31
-
WordPress主题:Pin Premium (WordPress仿Pinterest样式瀑布流主题) 2023-01-25 23:36:43
-
免费WordPress主题:Maupassant(WordPress中文博客主题) 2023-01-25 23:31:29
-
WordPress响应式图片(Responsive Image)功能关闭:取消WordPress图片宽带和高度参数 2023-01-24 10:49:32
-
wordpress报错:修复MySQL 1064错误问题 错误原因和解决方法 2023-01-24 10:42:04
-
WordPress 实现静态化搜索结果页面的方法 2023-01-24 00:41:44
-
WP Rocket – 强大的WordPress缓存加速优化插件(附:WP Rocket插件设置过程与七折优惠码) 2023-01-24 00:41:44
-
get_permalink、get_the_permalink和the_permalink有啥区别? 2023-01-24 00:41:08
-
为什么选用WordPress搭建独立站? 2023-01-23 20:25:21