Log In / Log Out Item in the Navigation Menu
Adds a Log in or Log out link at the end of a theme menu, depending on whether the visitor is logged in.
Opens WPIDE on
Code
// The theme menu location that gets the link (see Appearance > Menus > Manage Locations).
$wpide_login_menu_location = 'primary';
add_filter( 'wp_nav_menu_items', function ( $items, $args ) use ( $wpide_login_menu_location ) {
if ( empty( $args->theme_location ) || $wpide_login_menu_location !== $args->theme_location ) {
return $items;
}
$current = home_url( add_query_arg( array() ) );
if ( is_user_logged_in() ) {
$link = '<a href="' . esc_url( wp_logout_url( home_url( '/' ) ) ) . '">Log out</a>';
} else {
$link = '<a href="' . esc_url( wp_login_url( $current ) ) . '">Log in</a>';
}
return $items . '<li class="menu-item wpide-login-item">' . $link . '</li>';
}, 10, 2 );
Notes
Works with classic themes that use wp_nav_menu(); block themes use the Navigation block instead.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.