문제

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?

도움이 되었습니까?

해결책

It'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.com/wp-json/petebolduc/v1/test?foo=bar

gives:

"foo is bar"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 wordpress.stackexchange
scroll top