简体   繁体   中英

is_user_logged_in() not working in wordpress plugin

is_user_logged_in() function not working in WordPress plugin. Shows the following error:

Fatal error: Call to undefined function is_user_logged_in() in How can I use the logic in WordPress plugin?

is_user_logged_in() is located in wp-includes/pluggable.php . So please include this file in your plugin file and check.

Try with

$user = wp_get_current_user();
if($user->ID != 0 or $user->ID != null) ...

Plugins are loaded prior to pluggable.php , which is where is_user_logged_in() is located. Which means the function doesn't exist yet when you're trying to call it. Instead, do this:

add_action('init', 'ajax_auth_init');
function ajax_auth_init()
{
    if(!is_user_logged_in()) return;
    // rest of your code
}
function example_function() {
    if ( ! is_user_logged_in() ) {
        ajax_auth_init();
    }
}
add_action('init', 'example_function');

EDIT:

is_user_logged_in() is a pluggable function and you could get a fatal error if you call it too early. You can use this function inside your theme files without any additional code. Like:

<?php if ( is_user_logged_in() ) { ?>
    <a href="<?php echo wp_logout_url(); ?>">Logout</a>
<?php } else { ?>
    <a href="/wp-login.php" title="Members Area Login" rel="home">Members Area</a>
<?php } ?>

But inside plugin you should wait for wordpress to be loaded.

PS Sorry for my english.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM