2016-03-24 5 views
1

Я нахожусь в WordPress, и я пытаюсь перенаправить пользователя после входа в систему, но только если они вошли с определенной страницы (slug - «upgrade-now-gold-class-coaching»)Как перенаправиться после входа в систему, только если пользователь вошел в систему с определенной страницы?

Здесь что я сделал до сих пор:

function my_login_redirect($redirect_to, $request, $user) { 
    //did they try to login from this page? 
    if ($request == "upgrade-now-gold-class-coaching") { 
     //is there a user to check? 
     if (isset($user->roles) && is_array($user->roles)) { 
      //check for admins 
      if (in_array('administrator', $user->roles)) { 
       // redirect them to the default place 
       return $redirect_to; 
      } else { 
       return "https://www.drewbairdfitness.com/11674-2/"; 
      } 
     } else { 
      return $redirect_to; 
     } 
    } else { 
     return $redirect_to; 
    } 
} 

add_filter('login_redirect', 'my_login_redirect', 10, 3); 

Спасибо!

+0

Где вы размещаете свою форму для входа? это на вашей определенной странице или вы по-прежнему используете форму входа по умолчанию (wp-admin/wp-login.php)? – Jevuska

+0

Это на другой странице; это на самом деле '/ upgrade-now-gold-class-coaching /' - я планирую иметь несколько страниц входа; и хотите, чтобы каждый из них перенаправлял куда-то еще после входа в систему –

ответ

0

@Jared Codling, пожар login_redirect для перенаправления на раннем этапе, вы можете использовать wp_safe_redirect. Здесь пара примеров переадресации при запросе входа с определенной страницы на другую страницу, и если роль пользователя NOT равна administrator.

Перенаправление на странице использовать его URL:

add_filter('login_redirect', 'my_login_redirect', 10, 3); 

function my_login_redirect($redirect_to, $request, $user) 
{ 
    /* target certain page with their part url 
    * you can use url_to_postid($request) 
    * and pass in conditional statement with your target post id 
    * target post/page id = 7 
    * if (7 == url_to_postid($request)) 
    * make it sure you have hidden input name redirect_to 
    */ 
    if (false !== strpos($request, 'upgrade-now-gold-class-coaching') 
     && ! empty($user->roles)) 
    { 
     /* exclude administrator as role 
     * 
     */ 
     if (is_array($user->roles) 
      && ! in_array('administrator', $user->roles)) 
     { 
      /* redirect to another url 
      * we use hardcode slug 
      */ 
      $redirect_to = home_url('/11674-2/'); 
      wp_safe_redirect($redirect_to, 302); 
      exit; 
     } 
    } 
    return $redirect_to; 
} 

Перенаправление на страницу использовать свой идентификатор:

add_filter('login_redirect', 'my_login_redirect', 10, 3); 

function my_login_redirect($redirect_to, $request, $user) 
{ 
    /* target certain page with their part url */ 
    if (false !== strpos($request, 'upgrade-now-gold-class-coaching') 
     && ! empty($user->roles)) 
    { 
     /* exclude administrator as role 
     * 
     */ 
     if (is_array($user->roles) 
      && ! in_array('administrator', $user->roles)) 
     { 
      /* redirect to another url 
      * you can use function get_page_link(40), mean page id 40 
      */ 
      $redirect_to = get_page_link(40); 
      wp_safe_redirect($redirect_to, 302); 
      exit; 
     } 
    } 
    return $redirect_to; 
} 

Примечание: По функции пожарной фильтра login_redirect и использовать пользовательский логин формы, просто убедитесь, что у вас есть скрытое имя ввода redirect_to, например, форма входа в систему по умолчанию в..

Смежные вопросы