Главная Новости

Wordpress: Различное меню для залогиненных и незалогиненных посетителей


Опубликовано: 07.09.2018

Недавно на одном из клиентских сайтов, нам пришлось делать навигационное меню, которое изменяется для зарегистрированного и незарегистрированного посетителя. Суть идеи заключается в следующем: если посетитель залогинился, ввел свой логин и пароль в форме авторизации на сайте, жмакнул кнопочку «войти», следовательно, мы ему подсунем одно меню, в противном же случае, подсунем совершенно другое.

Собственно таким нехитрым методом, мы даем ответ на вопрос:

Как создать два разных меню для зарегистрированных и незарегистрированных пользователей в WordPress.

Делаются такие вещи на сайтах для того, чтобы посетитель сфокусировал свое внимание именно на том навигационном меню, которое поможет понять, что делать дальше, где зарегистрироваться, что почитать что-то может показать.

Логично будет незарегистрированным посетителям показывать такое меню сверху на сайте, для зарегистрированных посетителей перемещать его вниз, а сверху показывать совершенно другое меню.

Регистрируем два навигационных меню в wordpress, в файле functions.php :

register_nav_menus(array( 'UserLoggedIn' => 'User menu logged in', 'UserLoggedOut' => 'User menu logged out', )); User menu logged in – для залогиненных (зарегистрированных) посетителей сайта. User menu logged out – для незалогиненных (незарегистрированных) посетителей сайта.

Далее пишем функцию, которая будет выбирать, какое меню показывать зарегистрированным, а какое незарегистрированным:

function evgm_nav_menu_args($args = '') { if( is_user_logged_in() ) { $args['theme_location'] = 'UserLoggedIn'; } else { $args['theme_location'] = 'UserLoggedOut'; } return array_merge($args, $evgm_nav_menu_args); } add_filter('wp_nav_menu_args', 'evgm_nav_menu_args');

Вот и все, теперь в администраторском разделе cms wordpress: «Внешний вид»«Меню» → вкладка «Управления областями» у нас появятся две новые области расположения меню: «User menu logged in» и «User menu logged out» .

Вывод навигационного меню в шаблоне сайта:

<nav> <?php if (has_nav_menu('primary_navigation')) : wp_nav_menu(array('theme_location' => 'primary_navigation')); endif; ?> </nav>

Все вопросы пишите в комментариях к статье. :-)

rss