为了账号安全,请及时绑定邮箱和手机立即绑定

Wordpress 无法从 ajax 请求中获取_current_user_id()

Wordpress 无法从 ajax 请求中获取_current_user_id()

PHP
慕斯王 2021-06-29 18:23:08
我尝试用 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

}


查看完整回答
反对 回复 2021-07-02
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信