Если вы делаете какой-то закрытый сайт, например сайт сообщества, или просто хотите, чтобы контент был доступен только авторизованным пользователям, вам может понадобиться перенаправить неавторизованного пользователя на какую-либо страницу, например на главную.
Условия
Создадим функцию перенаправления unauthorized_custom_redirect
.
Сперва нужно убедиться, что пользователь не авторизован:
! is_user_logged_in()
Затем, что пользователь не находится на странице авторизации или регистрации:
! in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) )
Далее, что пользователь уже не на главной, если мы планируем перенаправить на главную:
&& ! is_home() && ! is_front_page()
После этого производим перенаправление. Обратите внимание, что после того, как произошло перенаправление(был отправлен заголовок), необходимо убить скрипт. Именно поэтому вызов exit
под условием, он будет осуществлен только в случае удачного перенаправления.
Вызываем функцию на хуке template_redirect
.
Листинг
function unauthorized_custom_redirect() {
if (
! in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) )
&& ! is_home()
&& ! is_front_page()
&& ! is_user_logged_in()
) {
if ( wp_safe_redirect( get_bloginfo( 'url' ), 301 ) ) {
exit;
}
}
}
add_action( 'template_redirect', 'unauthorized_custom_redirect' );