Reputation: 57
get_current_user_id()
is returning 0 for following codes. I do tried some solution available on stack overflow but somehow not working for me. I'm expecting explanation why its returning zero and how to fix?
P.S: I'm calling get_current_user_id() from external php page and included '../wp-blog-header.php'
for that.
Code:
<?php
require('../wp-blog-header.php');
get_header();
$user_ID = get_current_user_id();
echo $user_ID;
?>
Upvotes: 2
Views: 7456
Reputation: 1
if you are using ajax then may be in some browser versions we can't get id by get_current_user_id() for this we can use xhrFields in over ajax then it will work fine. if the problem with the browser version.
jQuery.ajax({
type: "POST",
xhrFields: {
withCredentials: true
},
cache: false,
Upvotes: 0
Reputation: 1418
You have to call wordpress proccess of user authentication. Try adding the following code before get_current_user_id();
, if it doesn't solve your problem it'll at least point you the right direction:
$user_id = apply_filters( 'determine_current_user', false );
wp_set_current_user( $user_id );
Hope it helps!
Upvotes: 12
Reputation: 27112
This is likely a result of including wp-blog-header.php
directly in your external file. From the Codex on get_current_user_id()
:
The user's ID, if there is a current user; otherwise 0.
I'm not sure what you're trying to do, but the correct method would be to add this logic to functions.php under the correct action hook, or by writing a custom plugin. By doing one of those two things, you will have access to the authenticated user.
Upvotes: 1