簡體   English   中英

WordPress無法從Ajax請求中獲取get_current_user_id()

[英]Wordpress cannot get_current_user_id() from ajax request

我嘗試用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。如何在不通過ajax發送的情況下在處理程序中獲取用戶ID?

首先,請檢查docs- WP Ajax

您需要發送action

注意上面的JavaScript中定義的'action'鍵的值'my_action'如何與下面的AJAX處理程序中的action'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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM