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

我尝试用 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 发送它?


慕斯王
浏览 151回答 1
1回答

holdtom

开始检查文档 - 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}
打开App,查看更多内容
随时随地看视频慕课网APP