Домой WordPress WordPress: Вопросы и ответы Формирование адреса ссылки на ЛК в меню в зависимости - авторизован юзер или нет
5ответ(ов) в теме
dmay
не в сети 4 года
На сайте с 17.03.2020
Участник
Тем 17
Сообщения 117
1
17:08

Доброго дня
Подскажите, пожалуйста. Имею следующую проблему:ссылка на ЛК из меню ведет не на страницу автора author.php (к примеру, https : //iepa.efp.by/author/dima/), а собственно на страницу личного кабинета account (https : //iepa.efp.by/account). Подскажите, пожалуйста, как реализовать, чтобы данная ссылка в зависимости от авторизации пользователя вела на разные адреса: если авторизован - то на https : //iepa.efp.by/author/{имя пользователя}/ как на скрине

Вы не можете просматривать опубликованные ссылки

,
если не авторизован - то по умолчанию на https : //iepa.efp.by/account.
Тему свою реализовал на основе стартовой темы clean-wp-template. Не могу понять как формируется меню, чтобы в нужном месте откорректировать код и сформировать ссылку в меню в зависимости от того авторизован пользователь или нет is_user_logged_in(). Вот функция из functions.php, формирующая меню:

if (!class_exists('bootstrap_menu')) {
	class bootstrap_menu extends Walker_Nav_Menu {
		private $open_submenu_on_hover;

		function __construct($open_submenu_on_hover = true) {
	        $this->open_submenu_on_hover = $open_submenu_on_hover;
	    }

		function start_lvl(&$output, $depth = 0, $args = array()) {
			$output .= "\n<ul class=\"dropdown-menu\">\n";
		}
		function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) {
			$item_html = '';
			parent::start_el($item_html, $item, $depth, $args);
			if ( $item->is_dropdown && $depth === 0 ) {
			   if (!$this->open_submenu_on_hover) $item_html = str_replace('<a', '<a class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"', $item_html);
			   $item_html = str_replace('</a>', ' <b class="caret"></b></a>', $item_html);
			}
			$output .= $item_html;
		}
		function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output) {
			if ( $element->current ) $element->classes[] = 'active';
			$element->is_dropdown = !empty( $children_elements[$element->ID] );
			if ( $element->is_dropdown ) {
			    if ( $depth === 0 ) {
			        $element->classes[] = 'dropdown';
			        if ($this->open_submenu_on_hover) $element->classes[] = 'show-on-hover';
			    } elseif ( $depth === 1 ) {
			        $element->classes[] = 'dropdown-submenu';
			    }
			}
			parent::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
		}
	}
}

Помогите, пожалуйста, не могу понять как подменять ссылку.

Редакции сообщения
18.06.2020 17:09dmayПричина: не указано
0
Вова (Otshelnik-Fm)
не в сети 5 дней
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
2
18:07

Здравствуйте.

Вы говорите про ЛК на плагине WP-Recall?

0
dmay
не в сети 4 года
На сайте с 17.03.2020
Участник
Тем 17
Сообщения 117
3
19:09

Да, про личный кабинет на WP-Recall.
Хотелось бы, чтобы ссылка на личный кабинет из меню, также вела на страницу автора личного кабинета, если он авторизован.
А сейчас у меня получается так, что ссылка всегда ведет на страницу post_name = 'account'. Вот скрин

Вы не можете просматривать опубликованные ссылки

.
Может быть вы подскажете решение?

0
Вова (Otshelnik-Fm)
не в сети 5 дней
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18654
4
19:42

dmay сказал(а)
Хотелось бы, чтобы ссылка на личный кабинет из меню, также вела на страницу автора личного кабинета, если он авторизован

посмотрите сниппет "Получить ссылку на личный кабинет авторизованного пользователя:"

Вы не можете просматривать опубликованные ссылки
0
dmay
не в сети 4 года
На сайте с 17.03.2020
Участник
Тем 17
Сообщения 117
5
12:01

Спасибо большое, благодаря данному сниппету параметр href формируемой ссылки в меню всегда ведет в ЛК авторизованного пользователя.
Вопрос решен

0
Тема закрыта. Публикация новых сообщений запрещена.