/**
* Добавляем в конец меню ссылки на регистрацию и вход / выход
*
* @param $items string HTML output of navigation menu items
* @param $args object Navigation menu arguments
*
* @return string Modified HTML output of navigation menu items
*/
function add_login_logout_register_menu( $items, $args ) {
// Проверяем, чтобы не админка и нужное меню (в данном случае - primary)
if ( is_admin() || 'primary' != $args->theme_location ) {
return $items;
}
// Если юзер авторизован
if ( is_user_logged_in() ) {
$items .= '<li><a href="' . home_url( 'my-account' ) . '">' . __( 'My Account', 'textdomain' ) . '</a></li>';
$items .= '<li><a href="' . wp_logout_url() . '">' . __( 'Log Out', 'textdomain' ) . '</a></li>';
// Если юзер не авторизован
} else {
$items .= '<li><a href="' . wp_login_url() . '">' . __( 'Log In', 'textdomain' ) . '</a></li>';
$items .= '<li><a href="' . wp_registration_url() . '">' . __( 'Sign Up', 'textdomain' ) . '</a></li>';
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'add_login_logout_register_menu', 199, 2 );
Важный момент - функции wp_login_url(), wp_logout_url() и wp_registration_url() будут использовать стандартный URL - wp-login.php. Если у вас произвольная регистрация/авторизация, все эти функции имеют фильтры с аналогичными названиями, через которые можно эти URL заменить.