我遇到了一個問題在WordPress的AJAX調用有時不能檢測到用戶登錄。在我的index.php文件的主題,我有以下代碼:WordPress的管理員/阿賈克斯沒有檢測到用戶登錄
<?php
$user_id = get_current_user_id();
?>
<script>
alert("Logged in as user #<?php echo $user_id; ?>");
</script>
因此,如果您是登錄並訪問該頁面的用戶,您將收到一條提示,顯示您的用戶ID。這很好。但是,當我通過admin-ajax.php執行AJAX調用時,它有時不會檢測到用戶已登錄。以下是我的後續在index.php中執行ajax調用的內容(使用jQuery ajax ):
$.ajax({
url: ajaxUrl,
type: "post",
data: {
action: 'test_ajax'
},
beforeSend: function(){},
complete: function(){},
success: function(data){
alert(data);
},
error: function(){}
});
而且在我的functions.php:
add_action('wp_ajax_test_ajax', 'test_ajax');
function test_ajax() {
$user_id = get_current_user_id();
echo "Your user id is: ".$user_id;
exit();
}
我已經注意到的是,有時wp_ajax甚至不會運行,因此它會響應0,所以我加了nopriv:
add_action('wp_ajax_nopriv_test_ajax', 'test_ajax');
但這種情況正在運行的情況下,也仍然會認爲用戶沒有登錄,並get_current_user_id()將返回0
我也試過wp_get_current_user();和全球$ CURRENT_USER;同時,他們返回空用戶爲好,即沒有用戶登錄。
我不知道這裏發生了什麼,因爲在index.php中的作品get_current_user_id()但有時admin-ajax並不這麼認爲(並非所有的時候,有時 - 我無法弄清楚爲什麼這是間歇性的)。我已經注意到了,雖然這是工作,我不知道爲什麼或者:
- 登錄到WordPress
- 轉到到index.php。
- 您將得到第一條提示說您已經登錄,但第二條提示(來自admin-ajax) 另有說明。
- 轉至/ wp-admin。由於您已經登錄,因此無需再次登錄即可看到儀表板。
- 回到index.php。兩種警報現在都是正確的。
我有這個問題,發現使用CodeKit的服務器(不同的網址/來源)是原因。加載直接/完整的本地主機路徑解決了它。 –