我尝试用 wordpress 做一个 ajax 请求。所以我创建了一个简单的 js 请求:$.ajax({ url: '?', type: 'POST', data: { 'pr_post': post, 'pr_rating': rating }, success: function (response) { console.log(response); }});这是我处理请求的函数。function pr_request(){ if (isset($_REQUEST['pr_post']) && isset($_REQUEST['pr_rating']) && isset($_REQUEST['pr_user'])) { $post = $_REQUEST['pr_post']; $rating = ($_REQUEST['pr_rating'] > 5 ? 5 : $_REQUEST['pr_rating']); $user = get_current_user_id(); if (!pr_has_user_already_voted($user, $post)) { global $wpdb; $table = $wpdb->prefix . 'mitmach_ratings'; $wpdb->query($wpdb->prepare("insert into $table values (null, $post, $rating, '$user');")); wp_send_json(['message' => 'success']); } else { wp_send_json(['message' => 'duplicate'], 403); } } }如您所见,我调用了该get_current_user_id()函数。即使用户登录,此函数也始终返回 true。如何在我的处理程序中获取用户 ID,而不通过 ajax 发送它?
1 回答
holdtom
TA贡献1805条经验 获得超10个赞
开始检查文档 - WP Ajax。
您需要发送action
密钥
请注意在上面的 JavaScript 中定义的“action”键的值“my_action”如何与下面的 AJAX 处理程序中的“wp_ajax_my_action”动作的后半部分匹配。这是因为它是通过 admin-ajax.php 来调用服务器端 PHP 函数的。如果没有指定动作,admin-ajax.php 将退出,并在此过程中返回 0。
$.ajax({
url: '?',
type: 'POST',
data: {
action : 'pr_post',
pr_rating : rating
},
success: function (response) {
console.log(response);
}
});
并像这样调用:
add_action( 'wp_ajax_pr_request', 'pr_request' );
add_action( 'wp_ajax_nopriv_pr_request', 'pr_request' );
function pr_request() {
// Code
}
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报
0/150
提交
取消