Вам нужно расширить свои (дочерние) темы functions.php следующим образом:
function so_loginout_menu_links( $items, $args ) {
if ( $args->theme_location == 'primary' && function_exists('is_woocommerce') ) {
if (is_user_logged_in()) {
$items .= '<li><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
$items .= '<li><a href="'. get_permalink( get_option('woocommerce_myaccount_page_id') ).'">'. __("My Account") .'</a></li>';
} else {
$items .= '<li><a href="'. wp_registration_url() .'">'. __("Log In") .'</a></li>';
$items .= '<li><a href="'. site_url('/wp-login.php?action=register').'">'. __("Register") .'</a></li>';
}
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'so_loginout_menu_links', 10, 2 );
Это расширяет меню «основной» двумя ссылками, фильтруя его, в зависимости от того, вошел ли пользователь в систему или нет. Я также добавил проверку на woocommerce, поскольку страница учетной записи зависит от woocommerce и может выдавать ошибки в случае ее деактивации.
«Основной» в вышеприведенном коде может потребоваться заменить на «primary-menu», «top» или как там будет называться первичное навигационное меню вашей темы.
Также убедитесь, что установлен флажок «Администрирование»> «Настройки»> «Основные»> «Членство» «Каждый может зарегистрироваться», в противном случае ссылка может не отображаться.
Обратите внимание, что в моем примере нет дополнительного CSS, поэтому дополнительные элементы еще не будут отображаться в выпадающем меню или в чем-либо другом. Для этого просмотрите существующие пункты меню и добавьте соответствующие классы и дополнительные элементы верхнего уровня в приведенный выше код соответственно.