2016-03-24 16 views
1

我在WordPress上,我試圖在登錄後重定向用戶,但只有當他們從某個頁面登錄(slug是'升級 - 現在黃金級教練')僅當用戶從某個頁面登錄後,我如何在登錄後重定向?

這裏是我到目前爲止:

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

它在不同的頁面上;它實際上是'/升級現在黃金級教練/' - 我打算有多個登錄頁面;並希望他們每個人登錄後重定向到別的地方 –

回答

0

@Jared Codling,火login_redirect要重定向早,可以使用wp_safe_redirect。如果請求從某個頁面登錄到另一個頁面,並且用戶角色不是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; 
} 

重定向到頁面中使用其ID:

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,如默認的wp登錄表格wp-login.php

相關問題