WordPress — кнопки «Регистрация», «Войти» и «Выйти» в меню

В этой заметке я расскажу, как добавить на вашем wordpress сайте кнопки Регистрация, Войти, Выйти и Перейти в консоль для зарегистрированных и не зарегистрированных пользователей.

Лично я довольно долго искал, как можно добавить кнопку «Регистрация» в меню сайта на WordPress. При этом эта кнопка должна быть видна только незарегистрированным пользователям. Сделать это я хотел как можно проще — можно было, конечно, просто вписать нужный php код в файл шаблона, воспользовавшись функцией is_user_logged_in() для того, чтобы узнать залогинен человек или нет. Но мне хотелось сделать как можно правильнее)

Вот какое решение я нашел: в файл functions.php, который хранится в папке с вашей темой, нужно добавить следующий код:

//добавляем нужные кнопки в меню
add_filter('wp_nav_menu_items', 'add_login_logout_link', 10, 2);
function add_login_logout_link($items, $args) {
$loginoutlink = wp_loginout('index.php', false);
if(!is_user_logged_in()) 
	 $items .= '<li><a href="/wp-login.php?action=register">Регистрация</a></li>';
else 
$items .= '<li><a href="/wp-admin/">Кабинет Автора</a></li>';
$items .= '<li>'. $loginoutlink .'</li>';
 return $items;
}

Что делает этот код? Всё просто — если человек залогинен — ему будет выведена кнопка выйти и кнопка «Кабинет Автора», ведущая в консоль. А в том случае, человек не зарегистрирован — он увидит кнопочку регистрация и кнопочку войти. Для этого используется функция add_filter(), которая в данном случае позволит повлиять на меню, созданное wordpress.

P.S. Удостоверьтесь, что ваша тема имеет поддержку меню — в тот же файл functions.php строчку add_theme_support(‘nav-menus’);

Поделитесь статьёй в социальных сетях: