# 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.

- Type: PHP
- Runs: Run everywhere
- Category: [Login](https://wpide.com/library/category/login/)
- Tags: login, menu, navigation
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/login-logout-menu-item/

## Code

```php
// 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 use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Log In / Log Out Item in the Navigation Menu" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
