get_current_user_id()
返回0。我确实尝试了一些堆栈溢出的解决方案但不知何故不适合我。我期待解释为什么它返回零以及如何修复?
P.S:我正在从外部php页面调用get_current_user_id()并为此包含'../wp-blog-header.php'
。
代码:
<?php
require('../wp-blog-header.php');
get_header();
$user_ID = get_current_user_id();
echo $user_ID;
?>
答案 0 :(得分:3)
你必须调用wordpress proccess的用户身份验证。尝试在get_current_user_id();
之前添加以下代码,如果它没有解决您的问题,它至少会指出正确的方向:
$user_id = apply_filters( 'determine_current_user', false );
wp_set_current_user( $user_id );
希望它有所帮助!
答案 1 :(得分:1)
这可能是因为wp-blog-header.php
直接包含在您的外部文件中。来自the Codex on get_current_user_id()
:
用户的ID,如果有当前用户;否则为0。
我不确定您要做什么,但正确的方法是将此逻辑添加到正确的action hook下的 functions.php 或{{ 3}}。通过执行这两项操作之一,您将可以访问经过身份验证的用户。
答案 2 :(得分:0)
如果您使用的是ajax,则可能是在某些浏览器版本中,我们无法通过get_current_user_id()来获取ID,为此,我们可以在ajax中使用xhrFields,那么它将正常工作。如果浏览器版本有问题。
jQuery.ajax({
type: "POST",
xhrFields: {
withCredentials: true
},
cache: false,