Almost every site I build requires WordPress login / logout functionality and I haven’t been able to find a standard way of adding a login/logout link to the primary menu of my theme.
I wrote this little filter that works like a charm and what I really really like about it is that when user hits the “logout” link, they will get redirected to the homepage rather than the standard WordPress logout page, which is wp-login.php?loggedout=true or something like that.
So here is the WordPress login / logout hook I’ve been using for quite some time:
/*------------------------------------------------*/ /* Add login/logout link to naviagation menu /*------------------------------------------------*/ if( ! function_exists( 'add_loginout_to_menu' ) ) { function add_loginout_to_menu( $items, $args ){ //Nav location in your theme. In this case, primary nav. Adjust accordingly. if( is_admin() || $args->theme_location != 'primary' ) return $items; if( is_user_logged_in( ) ) { $link = '<a href="' . wp_logout_url('/index.php') . '" title="' . __( 'Logout' ) .'">' . __( 'Logout' ) . '</a>'; } else $link = '<a href="/loginlink" title="' . __( 'My Account' ) .'">' . __( 'My Account' ) . '</a>'; return $items.= '<li id="loginout-link" class="menu-item menu-type-link">'. $link . '</li>'; } } add_filter( 'wp_nav_menu_items', 'add_loginout_to_menu', 10, 2 );
Marko