Wordpress admin/ajax未检测到用户登录
我在Wordpress中遇到了一个问题,AJAX调用有时无法检测到用户已登录。在主题的index.php文件的末尾,我有以下代码:Wordpress admin/ajax未检测到用户登录,ajax,wordpress,Ajax,Wordpress,我在Wordpress中遇到了一个问题,AJAX调用有时无法检测到用户已登录。在主题的index.php文件的末尾,我有以下代码: <?php $user_id = get_current_user_id(); ?> <script> alert("Logged in as user #<?php echo $user_id; ?>"); </script> 在my functions.php中: add_action('wp_a
<?php
$user_id = get_current_user_id();
?>
<script>
alert("Logged in as user #<?php echo $user_id; ?>");
</script>
在my 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不这么认为(不是所有时间,有时——我很难弄清楚为什么这是间歇性的…)。但我注意到这是可行的,我也不知道为什么:
试试这个,让我知道:
<?php
add_action('wp_ajax_test_ajax', 'test_ajax');
function test_ajax() {
global $current_user;
$user_id = get_current_user_id();
echo "Your user id is: ".$user_id;
exit();
}
?>
尝试在使用ajaxurl之前手动重置它,例如:
var ajaxurl="http://" + document.domain + "/wp-admin/admin-ajax.php";
我的问题是,当从en.mysite.com访问时,ajaxurl被称为www.mysite.com,这使得他们无法沟通。global$current\u user;同时返回0用户:/I我遇到此问题,并发现使用CodeKit的服务器(不同的url/来源)是原因。加载直接/完整本地主机路径解决了问题。您解决了问题吗?我有一个类似的问题:如果去Hompage,所有ajax调用都会给我一个uid 0;如果我转到另一页,uid是正确的;如果我回到主页,uid是正确的。在我的php回调中,我输出$_cookiesuperglobal,当uid为0时,COOKIE不会初始化。如果不是0,cookies将正确初始化(与预期一致)。好的,在我的例子中,这是一个http/https问题(在HttAccess中或通过插件不强制https)。转到,所有链接都是https格式,单击一个链接,再单击一个链接返回主页,一切都很好,因为它现在是https格式的,就像站点的url()。
var ajaxurl="http://" + document.domain + "/wp-admin/admin-ajax.php";