Перенаправить пользователя после первого входа в WordPress? - PullRequest
6 голосов
/ 24 ноября 2010

Этот код проверяет, входит ли пользователь в первый раз, то есть после регистрации. Я хочу перенаправить его на пользовательскую страницу, если это так. В противном случае, перенаправьте его на домашнюю страницу или страницу администратора.

 function mylogin_redirect() {
    global $user_ID;
    if( $user_ID ) {
        $user_info = get_userdata( $user_ID ); 
        // If user_registered date/time is less than 48hrs from now
        // Message will show for 48hrs after registration
        if ( strtotime( $user_info->user_registered ) > ( time() - 172800 ) ) {
            header("Location: http://example.com/custompage");
        } elseif( current_user_can( 'manage_options' )) {
            header("Location: http://example.com/wp-admin/");
        } else {
            header("Location: http://example.com/");
        }
    }
}
add_action('wp_head', 'mylogin_redirect');

Но это не работает? Я думаю, что это не зацепило wp_head ... Я попробовал следующее, используя фильтр login_redirect:

 function mylogin_redirect($redirect_to, $url_redirect_to = '', $user = null) {
    global $user_ID;
    if( $user_ID ) {
        $user_info = get_userdata( $user_ID ); 
        // If user_registered date/time is less than 48hrs from now
        // Message will show for 48hrs after registration
        if ( strtotime( $user_info->user_registered ) > ( time() - 172800 ) ) {
            return get_bloginfo('url') . "/custompage/";
        } elseif( current_user_can( 'manage_options' )) {
            return admin_url();
        } else {
            return get_bloginfo('url');
        }
    }
}
add_filter('login_redirect', 'mylogin_redirect');

Хотя он и регистрирует меня, но никуда не приводит, кроме http://example.com/wp-login.php, с пустой страницей.

UPDATE: Хорошо, я не знаю, что происходит. С помощью ловушки фильтра я могу попасть в пункт назначения только после второго входа в систему. Ну, не на самом деле второй вход в систему, а на втором нажатии кнопки входа в систему. Я сделал это так: введите учетные данные -> логин -> (неправильная страница) -> нажмите кнопку назад -> введите учетные данные еще раз -> логин -> (правильная страница). Weird.

Ответы [ 2 ]

4 голосов
/ 24 ноября 2010

Вам нужно настроить фильтр так, как;

// filter name, callback, priority, accepted args
add_filter('login_redirect', 'mylogin_redirect', 10, 3);
2 голосов
/ 08 апреля 2013

Перенаправление пользователей при первом входе в WordPress : решение на основе файлов cookie и решение на основе пользовательских мета-таблиц

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...