@alexiusgrey

Как исключить дочерний эндпоинт из редиректа myaccount?

Пользователи не должны видеть дефолтную форму авторизации-регистрации на странице myaccount. Должны авторизовываться через поп-ап форму, которая в шапке сайта.
Если нажать на иконку человека, то зарегистрированные попадут в свой кабинет, а незарегистрированным открывается форма поп-ап.
add_action('wp_logout','auto_redirect_after_logout');

function auto_redirect_after_logout(){

  wp_redirect( home_url() );
  exit();

}

Использую редирект на домашнюю страницу при выходе из аккаунта, но это не исключает попадание пользователя на дефолтную форму авторизации - если например человек выйдет из аккаунта, и нажмет потом "назад" на просмотренную страницу.
Пробовал сделать редирект из аккаунта всем незарегистрированным пользователям.
add_action( 'template_redirect', 'wish_custom_redirect' );
function wish_custom_redirect() {
  global $wp;
  if (!is_user_logged_in() &&  is_page('my-account') ) {
    wp_redirect( '/' );
    exit;
  }
}

Но форма восстановления пароля тоже тогда редиректит и не открывается, она дочерняя для страницы аккаунта, и человек не сможет восстановить пароль.
Я пробовал вот так
add_action( 'template_redirect', 'wish_custom_redirect' );
function wish_custom_redirect() {
  global $wp;
  if (!is_user_logged_in() &&  is_page('my-account') &&  !is_page('my-account/lost-password/')  ) {
    wp_redirect( '/' );
    exit;
  }
}

Но не работает, все равно редиректит. Как правильно ее исключить, или какой еще тут выход?
  • Вопрос задан
  • 37 просмотров
Пригласить эксперта
Ответы на вопрос 1
qant
@qant
programer
Нужно рулить через is_user_logged_in

if ( is_user_logged_in() ) {
	echo 'Вы авторизованы на сайте!';
}
else {
	echo 'Вы всего лишь пользователь!';
}


это тоже пригодиться

wp_logout_url( $redirect );
$redirect(строка)
УРЛ на который перекинет после выхода
По умолчанию: $redirect пусто
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы