I am running this simple conditional statement on my plugin page:
if (! is_user_logged_in()) {
add_action('init', 's8w_ajax_login_init');
}
It is throwing a fatal undefined function error for is_user_logged_in
. Am I missing something? I have several wp globals on the same page. Do I have to call something else for this to work?
I am running this simple conditional statement on my plugin page:
if (! is_user_logged_in()) {
add_action('init', 's8w_ajax_login_init');
}
It is throwing a fatal undefined function error for is_user_logged_in
. Am I missing something? I have several wp globals on the same page. Do I have to call something else for this to work?
1 Answer
Reset to default 2It's failing because WordPress isn't loaded. Instead of making AJAX requests directly to PHP files in your theme, make them to a REST API endpoint.
For example:
add_action( 'rest_api_init', function () {
register_rest_route( 'petebolduc/v1', '/test/', array(
'callback' => 'petebolduc_ajax'
) );
} );
function petebolduc( $parameters ) {
$foo = $parameters['foo'];
return "foo is " . $foo;
}
With that code, visiting: example/wp-json/petebolduc/v1/test?foo=bar
gives:
"foo is bar"
register_rest_route
– Tom J Nowell ♦ Commented Aug 9, 2020 at 0:42