ajax向action发送请求,使用 wp_ajax_(action) 为 WordPress 添加自定义 Ajax URL,发送 Ajax 请求到后端处理程序...

函数描述

wp_ajax_(action) 是自已钩子,此钩子允许我们挂载一个自定义函数,用来处理我们自己的 Ajax 请求。 wp_ajax_ 钩子的格式为 "wp_ajax_$your_action", $your_action 是 Ajax 请求的 'action' 属性。此外,我们也可以使用第三方库实现的自定义路由创建 Ajax URL。相对于自定义路由的方式,wp_ajax_(action)的方式,把一个固定 Ajax URL 添加到了 javaScript 全局对象中,然后通过请求的 ‘action’ 数据来区分不同的 Ajax 请求,更方便在 JavaScript 中使用。

使用方法

如果我们需要来添加一个 "add_foobar" 请求,我们应该像下面这样创建这个 Ajax 处理函数。

add_action( 'wp_ajax_add_foobar', 'prefix_ajax_add_foobar' );

function prefix_ajax_add_foobar() {

// 处理请求然后使用 WP_Ajax_Response 生成响应

// 处理完成后,不要忘记结束程序

wp_die();

}

当我们发送 Ajax 请求到 WordPress 中的时候,如果 ‘action’ 属性设置为 ‘add_foobar’,我们定义的钩子以及挂载到钩子上的函数会自动运行。例如,下面的例子将会执行上面我们定义的 Ajax 处理程序。

jQuery.post(

ajaxurl,

{

'action': 'add_foobar',

'data': 'foobarid'

},

function(response){

c-alert('服务器响应为: ' + response);

}

);

注意:上面例子中,“data” 参数的值 (foobarid) 可以在挂载的函数中,通过 $_POST 数组访问。

注意事项

wp_ajax_(action) 钩子只允许已登录的用户访问,如果我们需要同时监听未登录用户的 Ajax 请求, 需要使用 wp_ajax_nopriv_ 钩子,如: add_action( 'wp_ajax_nopriv_add_foobar', 'prefix_ajax_add_foobar' )

首先,在 WordPress 主题的 functions.php 文件中添加以下代码片段: ```php // 添加 AJAX 功能 add_action( 'wp_enqueue_scripts', 'add_ajax_script' ); function add_ajax_script() { wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/ajax-comments.js', array('jquery') ); wp_localize_script( 'ajax-script', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); } ``` 这将在 WordPress 的前端页面上添加所需的 JavaScript 文件,其中包括 ajax-comments.js。然后,在主题文件夹中创建一个新文件夹 js,并在其中创建一个新文件 ajax-comments.js,并添加以下代码: ```javascript jQuery(document).ready(function($) { // 当提交评论表单时执行以下操作 $('#commentform').submit(function(){ var form_data = $(this).serialize(); // 序列化表单数据 $.ajax({ type: 'POST', url: ajax_object.ajax_url, // 使用 wp-admin/admin-ajax.php 进行 AJAX 请求 data: form_data + '&action=add_comment', // 将表单数据添加请求中,并指定操作 success: function(response){ $('#commentform')[0].reset(); // 清空表单 $('.comment-list').append(response); // 将新评论添加到评论列表中 } }); return false; // 防止表单提交 }); }); ``` 这将在评论表单提交时使用 AJAX 进行异步请求,并在成功后将新评论添加到评论列表中。最后,在 functions.php 文件中添加以下代码以处理 AJAX 请求: ```php // 处理 AJAX 请求 add_action( 'wp_ajax_add_comment', 'add_comment_callback' ); add_action( 'wp_ajax_nopriv_add_comment', 'add_comment_callback' ); function add_comment_callback() { $comment_data = array( 'comment_post_ID' => $_POST['comment_post_ID'], 'comment_author' => $_POST['author'], 'comment_author_email' => $_POST['email'], 'comment_author_url' => $_POST['url'], 'comment_content' => $_POST['comment'], 'comment_type' => '', 'comment_parent' => $_POST['comment_parent'], 'user_id' => get_current_user_id(), 'comment_author_IP' => $_SERVER['REMOTE_ADDR'], 'comment_agent' => $_SERVER['HTTP_USER_AGENT'], 'comment_date' => current_time( 'mysql' ), 'comment_approved' => 1, ); $comment_id = wp_insert_comment( $comment_data ); // 插入新评论 $comment = get_comment( $comment_id ); // 获取新评论的信息 include( locate_template( 'comment.php', false, false ) ); // 加载评论模板并显示新评论 die(); // 终止脚本 } ``` 这将使用 wp_insert_comment() 函数将新评论插入 WordPress 数据库,并使用 comment.php 模板文件来显示新评论。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值