Рубрики
Wordpress

Перенаправить неавторизованного пользователя WordPress

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

Условия

Создадим функцию перенаправления 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' );