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' );