In WordPress theme or plugin development, you often need to display different content or functionality based on a user's login status. For example, showing a personal dashboard link for logged-in users and a login/registration link for visitors. This guide details the core WordPress function is_user_logged_in(), covering its usage, best practices, and common applications.
Core Function: is_user_logged_in()
is_user_logged_in() is a WordPress conditional tag that checks if the current visitor is authenticated (logged in).
- Return Value: Boolean.
- Returns
true: Current user is logged in. - Returns
false: Current user is not logged in (a guest).
- Returns
- Function Definition: This function is part of WordPress core and is available in themes and plugins without requiring additional includes.
Basic Usage
The most common usage is within a conditional statement in a PHP template file.
<?php
if ( is_user_logged_in() ) {
// Actions for logged-in users
echo 'Welcome back!';
} else {
// Actions for guests
echo 'Please log in or register.';
}
?>
Example in a Theme Template File
Here's a practical example for displaying a custom greeting in a site header.
<?php
// In header.php or any template file
if ( is_user_logged_in() ) {
$current_user = wp_get_current_user();
echo 'Hello, ' . esc_html( $current_user->display_name ) . '!';
echo '<a href="' . wp_logout_url( home_url() ) . '">Log Out</a>';
} else {
echo '<a href="' . wp_login_url( get_permalink() ) . '">Log In</a> | ';
echo '<a href="' . wp_registration_url() . '">Register</a>';
}
?>
Advanced Usage and Considerations
1. Combining with Shortcodes
Create a shortcode to display content only visible to logged-in users within posts or pages.
<?php
// Add to your theme's functions.php
add_shortcode( 'member_content', 'member_content_shortcode' );
function member_content_shortcode( $atts, $content = null ) {
if ( is_user_logged_in() ) {
return do_shortcode( $content );
}
return '<p class="login-required">This content is for members only. <a href="' . wp_login_url( get_permalink() ) . '">Please log in.</a></p>';
}
?>
Usage: In the editor, use [member_content]Hidden member content here.[/member_content].
2. Using Within Action Hooks
You may need to check login status inside specific hook functions.
<?php
// Example: Add custom script for logged-in users via wp_footer
add_action( 'wp_footer', 'custom_footer_for_logged_in_users' );
function custom_footer_for_logged_in_users() {
if ( ! is_user_logged_in() ) {
return;
}
echo '<script>console.log("Welcome, logged-in user!");</script>';
}
?>
3. Important Notes
- Initialization Timing:
is_user_logged_in()relies on WordPress user system initialization. It works reliably only after theplugins_loadedhook (typically atinitor later). Using it in very early hooks (likesetup_theme) may yield incorrect results. - Cache Compatibility: If your site uses full-page caching, dynamic user state checks can conflict. For core areas that change based on login status (like navigation), consider loading them via AJAX or JavaScript.
- Security: This function only checks login status, not user roles or capabilities. For finer access control, use
current_user_can(), e.g.,current_user_can( 'edit_posts' ).
Conclusion
is_user_logged_in() is a simple yet essential function in WordPress development, forming the foundation for user-state logic. By combining it with conditionals, shortcodes, and action hooks, developers can create rich, personalized user experiences. Remember to use current_user_can() for stricter permission control when needed to ensure site security.