Хотите, чтобы после регистрации новые пользователи при первом входе в блог под своим логином и паролем перенаправлялись на определенную страницу? Тогда нужно настроить редирект новых пользователей. Для чего это нужно? Например, для того, чтобы познакомить пользователей с правилами, лицензионным соглашением, перенаправить в профиль для заполнения дополнительной информации, или просто перенаправить новых пользователей на страницу, объясняющую, как пользоваться блогом.
Однако среди стандартных возможностей 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 );
Как и в первом случае, вы можете указать страницу, на которую идет перенаправление, количество переходов и временной интервал, в течение которого пользователь считается новым. Однако вычисление нового пользователя идет не по записи в базе данных, а по данным, попадающим в куки браузера.

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