2016-02-23 56 views
0

我想在用戶在多站點中激活時自動登錄用戶。 但是當我試圖使用與錯誤

警告wp_signon()它響應:無法修改標題信息 - 頭已經發出(輸出開始在C:\ XAMPP \ htdocs中\ krosswall \ WP-包括\類。 WP-styles.php:127)在C:\ XAMPP \ htdocs中\ krosswall \ WP-包括\ pluggable.php上線955

我試圖做到這一點

function kw_activate_blogs($user_id, $password, $meta) { 

    add_user_to_blog('2', $user_id, get_site_option('default_user_role', 'subscriber')); 

    $user = new WP_User((int) $user_id); 
    $creds = array(); 
    $creds['user_login'] = $user->user_login; 
    $creds['user_password'] = $password; 
    $creds['remember'] = true; 
    $user = wp_signon($creds, false); 
    wp_set_current_user($user->ID); 
    if (is_wp_error($user)) { 
     echo $user->get_error_message(); 
    } else { 
    // safe redirect to actually login the user - otherwise they would need to manually refresh the page 
    // PLUS: this clears the activation confirmation page with the plain text password printed on screen 
    //wp_safe_redirect(get_home_url()); 
     exit; 
    } 

} 

add_action('wpmu_activate_user', 'kw_activate_blogs', 10, 3);  

我加入這個代碼functions.php文件。請幫我解決它。

+0

運行之前的頭和餅乾送交─ ADD_ACTION(「after_setup_theme」,kw_activate_blogs'); –

+0

我想打電話給'wpmu_activate_user'鉤子... – piyush

+0

你能向我展示如何在代碼中使用它嗎? – piyush

回答

1

你可以這樣做:

function kw_activate_blogs($user_id, $password, $meta) 
{ 
    $result=add_user_to_blog('2', $user_id, get_site_option('default_user_role', 'subscriber')); 
    if (!is_wp_error($result)) 
    { 
     wp_set_current_user($user_id); 
     if (wp_validate_auth_cookie() == FALSE) 
     { 
      wp_set_auth_cookie($user_id, true, false); 
     } 
    } 
    else 
    { 
    //do something here on error 
    } 
} 

你不需要他們在這種情況下密碼。您還可以刪除第二和第三個參數,如果你不需要$meta和更改add_actionadd_action('wpmu_activate_user', 'kw_activate_blogs', 10);

+0

在我的代碼,我必須把上面的代碼? – piyush

+0

@piyush編輯答案以示更好。 –

+0

它仍然給出相同的錯誤.. – piyush