Here’s how I managed to set it up for one client. The code (which should go into the theme’s functions.php
) assumes there’s an existing menu item titled ‘Login’. Works fine but may not be the best way, so critique is welcome.
function wpse0520_modify_login_menu_item( $item ) {
if(isset($item->title)){
if( $item->title =='Login' ) {
if(is_user_logged_in()){
$item->url = wp_logout_url( get_permalink() );
$item->title="Logout";
} else {
$item->url = site_url( 'login' );
}
} elseif ( $item->title =='Logout' ) {
if(!is_user_logged_in()){
$item->url = site_url( 'login' );
$item->title="Login";
} else {
$item->url = wp_logout_url( get_permalink() );
}
}
}
return $item;
}
add_filter( 'wp_setup_nav_menu_item', 'wpse0520_modify_login_menu_item' );