get_current_user_id() returns 0 in external PHP page
Sorry... I posted the original in the plugins & hacks group...
I am writing a plugin that has an non WP page in it to record votes in a database table and return JSON of the vote counts. I have spent the last few hours googling and can't seem to figure out how to get get_current_user_id() to return anything but 0 in an external PHP file
The offending code is:
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'].'/test/wp-blog-header.php' );
do_action( 'login_init' );
$user_id=get_current_user_id();
echo $user_id;
this displays 0
I tried it with:
require( $_SERVER['DOCUMENT_ROOT'].'/test/wp-load.php' );
$user_id=get_current_user_id();
echo $user_id;
and get the same result – 0.
I have a shortcode that works fine in a WP created page, but in my custom page do_shortcode( ‘[custom-shortcode]’ ); displays 0 as the $user_id.
All other WP functions appear to be working – get_site_url works and I have access to other php files in my plugin that use $wpdb and they all work…
My WP install is in the test/ directory under my main site – hence the '/test/' in the require statements. The PHP file in question is in the root of the plugin directory.
There has got to be something simple I am missing – any ideas?
Full page code – (obviously there is more output than just JSON – I'm trying to get the user issue figured out…):
<?php
/*
vote.php
*/
define('WP_USE_THEMES', false);
require( $_SERVER['DOCUMENT_ROOT'].'/test/wp-blog-header.php' ); //tried this with wp-load.php too
do_action( 'login_init' );
$_SESSION['key'] = "jkshdfkjhdsfjkhaksdfkjsahfjkdbfbudsfbvjhbvjhbrukbuhbvjkhfbvjs"; //purposely set for testing
$post_id = $_GET['id']; //get post_id (SHOULD BE FROM QUERY STRING)
echo "post_id:{$post_id}<br>";
$url_session = $_GET['key']; //get session key from URL
echo "url session:{$url_session}<br>";
$session_id = $_SESSION['key']; //get session id
echo "session ID:{$session_id}<br>";
$user_id = get_current_user_id(); //get current logged in user
echo "user_id:{$user_id}<br>";
$vote = $_GET['vote']; //get vote from query string
echo "vote:{$vote}<br>";
echo "site url:" . get_site_url() . "<br>";
echo "referrer:". $_SERVER['HTTP_REFERER'] . "<br>";
$error = 0; //set error count to 0
$error = ( FALSE !== get_post_status( $post_id ) ? $error : $error + 1 ); //check to see if post exists
echo "error after post status check:{$error}<br>";
$error = ( $user_id != 0 ? $error : $error + 1 ); //check to see if user logged in
echo "error after userid check:{$error}<br>";
$error = ( $url_session == $session_id ? $error : $error + 1 ); //check to see if session is valid
echo "error after session check:{$error}<br>";
$error = ( strpos("read_it,skip_it", $vote ) !== false ? $error : $error + 1 ); //check to see if the vote is valid
echo "error after vote type check:{$error}<br>";
$error = ( FALSE !== strpos($_SERVER['HTTP_REFERER'], get_site_url()) ? $error : $error + 1 ); //check to url referrer
echo "error after referrer check:{$error}<br>";
if($error == 0){ //if all validity checks pass
$votes = record_postvotes($user_id, $post_id, 'skip_it'); //submit the vote and get return values
$output = "{\"votes\":[{\"ReadIt\":{$votes[0]['read_it']},\"SkipIt\":{$votes[0]['skip_it']}}]}";
} else {
$output = ''; //otherwise, return nothing
} //end error check
echo $output;
?>