2010-04-26 53 views
1

在我的主題中,有登錄的自定義頁面。在functions.php中登錄的功能是這樣的如何添加在自定義登錄框中記住我的功能?

function log_in($username, $password) { 

    $user = parse_user($username); 

    $username = $username; 
    $password = $password; 

    if(isEmptyString($username)) return new WP_Error('username', 'required'); 
    if(isEmptyString($password)) return new WP_Error('password', "required"); 
    if(!wp_check_password($password, $user->user_pass)) return new WP_Error('wrong_password', "wrong"); 

    wp_set_auth_cookie($user->ID, $remember); 
    wp_login($username, $password); 

    redirect_profile(); 

} 

function parse_user($info = null, $return = 'object') { 
    if (is_null($info)) { 
     global $current_user; 
     if (empty($current_user->ID)) return null; 
     $info = get_userdata($current_user->ID); 
    } 
    elseif (empty($info)) { 
     return null; 
    } 
    if($return == 'ID') { 
     if (is_object($info)) return $info->ID; 
     if (is_numeric($info)) return $info; 
    } 
    elseif($return == 'object') { 
     if (is_object($info) && $info->ID) return $info; 
     if (is_object($info)) return get_userdata($info->ID); 
     if (is_numeric($info)) return get_userdata($info); 
     if (is_string($info)) return get_userdatabylogin($info); 
    } 
    else { 
     return null; 
    } 
} 

我想補充記得我的用戶複選框,登錄所有的時間,直到他們退出。我如何添加這個?請幫助我。謝謝。

回答

0

「你的WordPress主題添加一個登錄表單」(包括記得我的功能): http://www.wprecipes.com/add-a-login-form-on-your-wordpress-theme

另外:http://www.problogdesign.com/how-to/how-to-create-a-wordpress-login-form-overlay/

等等

+0

我檢查這個職位了。問題是他在表單動作中使用了wp-login.php。我使用的主題是使用自己的功能的表單帖子,我張貼在上面。 – morningglory 2010-04-26 08:47:09

+0

那麼你爲什麼不使用wp-login.php中的代碼呢? – zaf 2010-04-26 08:52:44

+0

因爲如果我使用wp-login.php,如果用戶留下空白的usrename或密碼,當返回錯誤時,它們將從當前登錄框執行,wordpress將在wp-login顯示驗證錯誤。這就是爲什麼 – morningglory 2010-04-26 09:01:27

1

「記住我」 按鈕通常只是對內部cookie設置進行簡單的調整。而不是被刪除當瀏覽器exitted,一個「記住我」會話cookie登錄cookie得到一些未來到期點(一天,一個月,一年,等...),所以瀏覽器關閉後,它會堅持。

在僞代碼,你必須:

if (form_value('remember_me') == 'yes) { 
    set_long_term_cookie(); 
} else { 
    set_session_cookie(); 
}