注册后自动登录
Auto Login after Registration
我正在使用 custom registration form
,用户在 sign up
时注册。
现在,我真正想做的是用户 重定向到他们的 profile page
auto_logged in
registration
完成后。我在 strong textstack overflow 上搜索了一些解决方案,但 none 帮助了我。
这是我的注册snippet
Note: registration form is not included here
$err = '';
$success = '';
global $wpdb, $PasswordHash, $current_user, $user_ID;
if(isset($_POST['task']) && $_POST['task'] == 'register' ) {
$pwd1 = $wpdb->escape(trim($_POST['pwd1']));
$pwd2 = $wpdb->escape(trim($_POST['pwd2']));
$first_name = $wpdb->escape(trim($_POST['first_name']));
$last_name = $wpdb->escape(trim($_POST['last_name']));
$email = $wpdb->escape(trim($_POST['email']));
$username = $wpdb->escape(trim($_POST['user_name']));
$user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
if( is_wp_error($user_id) ) {
$err = 'Error on user creation.';
} else {
do_action('user_register', $user_id);
$success = 'You\'re successfully register';
}
}
感谢任何帮助。
谢谢
将此代码放入您的 functions.php 文件中。
<?php
function tml_new_user_registered( $user_id ) {
wp_set_auth_cookie( $user_id, false, is_ssl() );
wp_redirect( admin_url( 'profile.php' ) );
exit;
}
add_action( 'tml_new_user_registered', 'tml_new_user_registered' );
?>
我希望这对 you.Thanks
有用
首先,将此函数添加到functions.php
:
function so37068411_wp_auto_login($username, $useremail, $userpwd) {
if ( empty($username)
|| empty($useremail)
|| empty($userpwd) )
return; // better to send out a message.
$username = sanitize_user($username);
$useremail = sanitize_email($useremail);
$userpwd = sanitize_user($userpwd);
if ( username_exists($username) ) {
// do something.
}
$user_id = wp_create_user($username, $userpwd, $useremail);
if ($user_id) {
wp_set_auth_cookie( $user_id, false, is_ssl() );
wp_redirect( admin_url('profile.php') );
exit;
} else {
// do something.
}
}
您可以添加其他验证。这取决于您的表单字段。
二、创建测试页模板:
/**
* Template Name: Registration Page
*/
if ( isset($_POST['submit-btn']) ) {
so37068411_wp_auto_login($_POST['user_name'], $_POST['user_pwd'], $_POST['user_email']);
}
?><!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>WordPress Deployment ‹ Registration Form</title>
<link rel="stylesheet" href="<?= admin_url('load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,buttons,forms,l10n,login&ver=4.5.2') ?>" type="text/css" media="all" />
</head>
<body class="login login-action-register wp-core-ui locale-en-us">
<div id="login">
<form name="registerform" id="registerform" action="" method="post" novalidate>
<p>
<label for="user_name">Username<br />
<input type="text" name="user_name" class="input" value="" size="20" />
</label>
</p>
<p>
<label for="user_email">Email<br />
<input type="email" name="user_email" class="input" value="" size="25" />
</label>
</p>
<p>
<label for="user_pwd">Password<br />
<input type="text" name="user_pwd" class="input" value="" size="20" /></label>
</p>
<p class="submit">
<input type="submit" name="submit-btn" class="button button-primary button-large" value="Register" />
</p>
</form>
</div>
</body>
</html>
现在,使用该模板创建一个页面并检查它。该表格用于演示目的是最小的,您可以自行修改。确保安全地进行验证和消毒。
您正在使用操作 "user_register" 成功注册完成后使用此挂钩,当用户注册完成时它将自动登录,如下所示:
// It is login system same as wordpress and also global variable available like $current_user etc.
add_action('user_register', "auto_login_after_register");
function auto_login_after_register( $user_id ){
global $wpdb;
if( 'post' == strtolower($_SERVER['REQUEST_METHOD']) ){
$pwd1 = $wpdb->escape(trim($_POST['pwd1']));
$username = $wpdb->escape(trim($_POST['user_name']));
$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $pwd1;
$creds['remember'] = false;
$user = wp_signon( $creds, false );
if ( ! is_wp_error($user) ){
wp_redirect( admin_url('profile.php') );
exit;
}
}
}
或者直接输入代码
$user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
if( is_wp_error($user_id) ) {
$err = 'Error on user creation.';
} else {
do_action('user_register', $user_id);
$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $pwd1;
$creds['remember'] = false;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) ){
$err = $user->get_error_message();
}else{
$login_redirect = apply_filters( 'login_redirect', admin_url('profile.php') );
wp_redirect( $login_redirect );
exit;
}
$success = 'You\'re successfully register';
}
我正在使用 custom registration form
,用户在 sign up
时注册。
现在,我真正想做的是用户 重定向到他们的 profile page
auto_logged in
registration
完成后。我在 strong textstack overflow 上搜索了一些解决方案,但 none 帮助了我。
这是我的注册snippet
Note: registration form is not included here
$err = '';
$success = '';
global $wpdb, $PasswordHash, $current_user, $user_ID;
if(isset($_POST['task']) && $_POST['task'] == 'register' ) {
$pwd1 = $wpdb->escape(trim($_POST['pwd1']));
$pwd2 = $wpdb->escape(trim($_POST['pwd2']));
$first_name = $wpdb->escape(trim($_POST['first_name']));
$last_name = $wpdb->escape(trim($_POST['last_name']));
$email = $wpdb->escape(trim($_POST['email']));
$username = $wpdb->escape(trim($_POST['user_name']));
$user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
if( is_wp_error($user_id) ) {
$err = 'Error on user creation.';
} else {
do_action('user_register', $user_id);
$success = 'You\'re successfully register';
}
}
感谢任何帮助。 谢谢
将此代码放入您的 functions.php 文件中。
<?php
function tml_new_user_registered( $user_id ) {
wp_set_auth_cookie( $user_id, false, is_ssl() );
wp_redirect( admin_url( 'profile.php' ) );
exit;
}
add_action( 'tml_new_user_registered', 'tml_new_user_registered' );
?>
我希望这对 you.Thanks
有用首先,将此函数添加到functions.php
:
function so37068411_wp_auto_login($username, $useremail, $userpwd) {
if ( empty($username)
|| empty($useremail)
|| empty($userpwd) )
return; // better to send out a message.
$username = sanitize_user($username);
$useremail = sanitize_email($useremail);
$userpwd = sanitize_user($userpwd);
if ( username_exists($username) ) {
// do something.
}
$user_id = wp_create_user($username, $userpwd, $useremail);
if ($user_id) {
wp_set_auth_cookie( $user_id, false, is_ssl() );
wp_redirect( admin_url('profile.php') );
exit;
} else {
// do something.
}
}
您可以添加其他验证。这取决于您的表单字段。
二、创建测试页模板:
/**
* Template Name: Registration Page
*/
if ( isset($_POST['submit-btn']) ) {
so37068411_wp_auto_login($_POST['user_name'], $_POST['user_pwd'], $_POST['user_email']);
}
?><!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>WordPress Deployment ‹ Registration Form</title>
<link rel="stylesheet" href="<?= admin_url('load-styles.php?c=1&dir=ltr&load%5B%5D=dashicons,buttons,forms,l10n,login&ver=4.5.2') ?>" type="text/css" media="all" />
</head>
<body class="login login-action-register wp-core-ui locale-en-us">
<div id="login">
<form name="registerform" id="registerform" action="" method="post" novalidate>
<p>
<label for="user_name">Username<br />
<input type="text" name="user_name" class="input" value="" size="20" />
</label>
</p>
<p>
<label for="user_email">Email<br />
<input type="email" name="user_email" class="input" value="" size="25" />
</label>
</p>
<p>
<label for="user_pwd">Password<br />
<input type="text" name="user_pwd" class="input" value="" size="20" /></label>
</p>
<p class="submit">
<input type="submit" name="submit-btn" class="button button-primary button-large" value="Register" />
</p>
</form>
</div>
</body>
</html>
现在,使用该模板创建一个页面并检查它。该表格用于演示目的是最小的,您可以自行修改。确保安全地进行验证和消毒。
您正在使用操作 "user_register" 成功注册完成后使用此挂钩,当用户注册完成时它将自动登录,如下所示:
// It is login system same as wordpress and also global variable available like $current_user etc.
add_action('user_register', "auto_login_after_register");
function auto_login_after_register( $user_id ){
global $wpdb;
if( 'post' == strtolower($_SERVER['REQUEST_METHOD']) ){
$pwd1 = $wpdb->escape(trim($_POST['pwd1']));
$username = $wpdb->escape(trim($_POST['user_name']));
$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $pwd1;
$creds['remember'] = false;
$user = wp_signon( $creds, false );
if ( ! is_wp_error($user) ){
wp_redirect( admin_url('profile.php') );
exit;
}
}
}
或者直接输入代码
$user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) );
if( is_wp_error($user_id) ) {
$err = 'Error on user creation.';
} else {
do_action('user_register', $user_id);
$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $pwd1;
$creds['remember'] = false;
$user = wp_signon( $creds, false );
if ( is_wp_error($user) ){
$err = $user->get_error_message();
}else{
$login_redirect = apply_filters( 'login_redirect', admin_url('profile.php') );
wp_redirect( $login_redirect );
exit;
}
$success = 'You\'re successfully register';
}