Хотите, чтобы после регистрации новые пользователи при первом входе в блог под своим логином и паролем перенаправлялись на определенную страницу? Тогда нужно настроить редирект новых пользователей. Для чего это нужно? Например, для того, чтобы познакомить пользователей с правилами, лицензионным соглашением, перенаправить в профиль для заполнения дополнительной информации, или просто перенаправить новых пользователей на страницу, объясняющую, как пользоваться блогом.
Однако среди стандартных возможностей WordPress пока что нет настройки перенаправлений. Давайте исправим это – создадим редирект для новых пользователей. Предлагаю воспользоваться двумя способами: редирект новых пользователей, использующий куки браузера, и редирект, использующий мета-данные пользователя, записываемые в базу данных.
Для того, чтобы пользователи после регистрации при первом входе в блог под своим логином и паролем перенаправлялись на определенную страницу, добавьте в файл functions.php используемой темы:
function firstLoginRedirect( $redirect_to, $requested_redirect_to, $user )
{
// URL страницы для редиректа
$redirect_url = 'http://вашсайт.ru/первая_страница_для_нового_пользователя';
// Сколько раз перенаправлять пользователя
$num_redirects = 1;
// Какое время с момента регистрации считать пользователя новым: 172800 секунд = 48 часов
$message_period = 172800;
if( !isset( $user->user_login ) )
{
return $redirect_to;
}
$key_name = 'redirect_on_first_login';
$current_redirect_value = get_user_meta( $user->ID, $key_name, true );
if( strtotime( $user->user_registered ) > ( time() - $message_period )
&& ( '' == $current_redirect_value || intval( $current_redirect_value ) ID, $key_name, $num_redirects );
return $redirect_url;
}
else
{
return $redirect_to;
}
}
add_filter( 'login_redirect', 'firstLoginRedirect', 10, 3 );
Этот способ использует специальную запись в базе данных, которая позволяет определить нового пользователя: она действительна в случае, если пользователь вошел в блог через определенное время. Временной промежуток, в течение которого пользователь считается новым, вы можете изменить – он указывается в секундах, и отсчитывается с момента регистрации. Так же вы можете указать страницу, на которую происходит редирект, и количество перенаправлений в течение указанного срока.
Для того, чтобы новые пользователи при первом входе под своим логином и паролем перенаправлялись на определенную страницу, добавьте в файл functions.php используемой темы:
function firstLoginRedirect( $redirect_to, $requested_redirect_to, $user )
{
// URL страницы для редиректа
$redirect_url = 'http://вашсайт.ru/первая_страница_для_нового_пользователя';
// Сколько раз перенаправлять пользователя
$num_redirects = 1;
// Какое время с момента регистрации считать пользователя новым: 172800 секунд = 48 часов
$message_period = 172800;
if( !isset( $user->user_login ) )
{
return $redirect_to;
}
$key_name = 'redirect_on_first_login_' . $user->ID;
if( strtotime( $user->user_registered ) > ( time() - $message_period )
&& ( !isset( $_COOKIE[$key_name] ) || intval( $_COOKIE[$key_name] ) < $num_redirects )
)
{
if( isset( $_COOKIE[$key_name] ) )
{
$num_redirects = intval( $_COOKIE[$key_name] ) + 1;
}
setcookie( $key_name, $num_redirects, time() + $message_period, COOKIEPATH, COOKIE_DOMAIN );
return $redirect_url;
}
else
{
return $redirect_to;
}
}
add_filter( 'login_redirect', 'firstLoginRedirect', 10, 3 );
Как и в первом случае, вы можете указать страницу, на которую идет перенаправление, количество переходов и временной интервал, в течение которого пользователь считается новым. Однако вычисление нового пользователя идет не по записи в базе данных, а по данным, попадающим в куки браузера.








А как сделать так, чтобы редиректить пользователей на конкретную страницу, например на форму до тех пор пока они ее не заполнят (не по времени, а в зависимости от заполненности).. И перестать на нее перебрасывать когда они эту форму заполнили?