In my application a user needs to 1stlogin and is then able to access the website.

There are 3 different user roles in use on my site

  1. administrator
  2. editor
  3. contributor

User can login from


No login from any theme template.

I have found this code, but it doesn't work

function my_login_redirect_contributors() {
  if ( current_user_can('contributor') ){
      return 'url-to-redirect-to';

add_filter('login_redirect', 'my_login_redirect_contributors');

Note: I do not want to use plugin like Peter's Login Redirect. I want to achieve it by customizing wp core code with a filter.

  • Why is the code you posted not working?
    – mor7ifer
    Jan 31, 2012 at 10:45
  • @m0r7if3r Ops its just for an idea
    – Ajay Patel
    Jan 31, 2012 at 10:46
  • I gathered. What specifically about it is failing, because that code looks good to me.
    – mor7ifer
    Jan 31, 2012 at 10:48

1 Answer 1


You're using the filter wrong. If you got more than one @param, then you have to state them when adding the filter.

function wpse40745_redirect_on_login( $redirect_to, isset( $_REQUEST['redirect_to'] ), $user )
    # uncomment the following line if it's not working and replace $user->roles[0] with something that works
    // echo '<pre>'; print_r( $user ); echo '</pre>'; exit;

    if ( in_array( $user->roles[0], array( 'contributer', 'whatever_other_role ) ) )
        return home_url();

    return $redirect_to;
add_filter( 'login_redirect', 'wpse40745_redirect_on_login', 20, 3 );

This site is temporarily in read-only mode and not accepting new answers.

Not the answer you're looking for? Browse other questions tagged .