2012-11-27 6 views
0

프론트 엔드 등록 양식을 갖고있는 사이트에서 일하고 있는데, 정상적으로 작동하지만 자동 로그인에 어려움을 겪고 있으며 등록 성공시 리디렉션됩니다. 내 테마 함수 파일에 몇 가지 플러그인과 코드를 시도했지만 아무 것도 작동하지 않는 것 같습니다. 성공적인 등록 후에 어떻게 자동으로 로그인 할 수 있습니까? 어떤 도움이라도 감사 할 것입니다.등록 후 자동 로그인 - Wordpress

<?php 
if(get_option('users_can_register')) { 
//Check whether user registration is enabled by the administrator 
?> 

<?php 

if($_POST){ 
    //We shall SQL escape all inputs 
    $username = $wpdb->escape($_REQUEST['username']); 
    if(empty($username)) { 
     echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />You have to fill in the username."; 
     exit(); 
    } 
    $email = $wpdb->escape($_REQUEST['email']); 
    if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $email)) { 
     echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />please use a calid e-mailadress."; 
     exit(); 
    } 

    $pass1 = $wpdb->escape($_REQUEST['pass1']); 
$pass2 = $wpdb->escape($_REQUEST['pass2']); 
if ($pass1 != $pass2){ 
    echo "<span style='color:#FF0000'><strong>Error..</strong></span><br /><br />please use a passwords don't match."; 
     exit(); 

} 
$random_password = $pass1; 
    $status = wp_create_user($username, $random_password, $email); 
    if (is_wp_error($status)) 
     echo "<span style='color:#FF0000'><strong>Feil..</strong></span><br /><br />Username allready exist. please try another one."; 
    else { 
     $from = get_option('admin_email'); 
     $headers = 'From: '.$from . "\r\n"; 
     $subject = "Registration ok!"; 
     $msg = "Welcome, you are now registered. Here is your username and password.\Info:\Username: $username\Password: $random_password"; 
     wp_mail($email, $subject, $msg, $headers); 
     echo "<strong>You are now registered. An e-mail is now sent to you with your username and password.."; 
    } 

    exit(); 

} 
else 
{ 
//Embed the register form and javascript here 

?> 


<div id="result"></div> 
<div style="padding-top:5px;"><h2 style="font-size:16px;color:#06f;">Register</h2></div> 

<form id="wp_signup_form" action="" method="post"> 
<p><label>Username<br /> 
<input type="text" name="username" style="width:250px; margin-bottom:3px;"></label></p> 
<p><label>E-Mail<br /> 
<input type="text" name="email" style="width:250px; margin-bottom:3px;"></label></p> 
<p><label>Password<br /> 
<input type="password" name="pass1" style="width:250px; margin-bottom:3px;"></label></p> 
<p><label>Repeat Password<br /> 
<input type="password" name="pass2" style="width:250px; margin-bottom:3px;"></label></p> 
<br /> 
<input type=checkbox name="termsnp">By registering I agree to the terms and policy<br /><br /> 
<input type="submit" id="submitbtn" name="submit" value="Register" class="knapp" style="padding:8px;"> 
</form> 
<script type="text/javascript">       
$("#submitbtn").click(function() { 
$('#result').html('<img src="<?php bloginfo('template_url'); ?>/images/loader.gif" class="loader" />').fadeIn(); 
var input_data = $('#wp_signup_form').serialize(); 
$.ajax({ 
type: "POST", 
url: "<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>", 
data: input_data, 
success: function(msg){ 
$('.loader').remove(); 
$(' 
<div>').html(msg).appendTo('div#result').hide().fadeIn('slow'); 
} 
}); 
return false; 

}); 
</script> 
<?php 
// embedded 

} 
?> 

<?php 
    } 
?> 

답변

0

난에 기록하고 성공적인 등록에 리디렉션 등록 양식을 작성하는 프로 가공 할 플러그인을 사용하던 일을 결국 무엇 때문에 사용하는 보정 코딩을 찾지 못했습니다. - 자동 로그인에 대한 http://formidablepro.com/

0

성공적인 URL에 의해이

wp_redirect(site_url('my-account')); exit; 

교체 SITE_URL을 ('내 - 계정') 레지스터 사용이 코드

$userdata = array(
     'user_login' => esc_attr($username), 
     'user_email' => esc_attr($email), 
     'user_pass' => esc_attr($password), 
     'first_name' => esc_attr($first_name), 
     'last_name' => esc_attr($last_name), 
     'display_name' => esc_attr($first_name.' '.$last_name), 
    ); 
    $register_user = wp_insert_user($userdata); 
    if (!is_wp_error($register_user)) { 
     wp_set_current_user($register_user, $username); 
     wp_set_auth_cookie($register_user); 
     do_action('wp_login', $username); 
    } else{ 
     echo $register_user->get_error_message(); 
    } 

후 리디렉션 사용