12

几天来,我一直在尝试让刚刚注册到我的 WordPress 网站的用户自动登录,然后将他们重定向到我选择的 URL。

默认情况下,WordPress 会向您发送用户名和密码,然后您必须手动登录。这是一个彻头彻尾的痛苦。我该如何克服这一点。

我有自己的注册页面(核心 php 页面),它成功地将用户添加到数据库中。但关键是,我应该避免用户再次登录。

一旦注册完成,它应该会自动redirects进入主页或个人资料页面。

我是 wordpress 功能的新手。如果有人(了解 wordpress 的核心功能)至少提出一种方法/解决方案,将不胜感激。

期待。
谢谢

4

4 回答 4

37

// 添加function.php用于注册后自动登录并重定向到主页。修改了这段代码

function auto_login_new_user( $user_id ) {
    wp_set_current_user($user_id);
    wp_set_auth_cookie($user_id);
    $user = get_user_by( 'id', $user_id );
    do_action( 'wp_login', $user->user_login );//`[Codex Ref.][1]
    wp_redirect( home_url() ); // You can change home_url() to the specific URL,such as "wp_redirect( 'http://www.wpcoke.com' )";
    exit;
}
add_action( 'user_register', 'auto_login_new_user' );
于 2013-11-15T09:39:51.893 回答
10

以下是基于 WooCommerce 如何创建新用户并将其登录:

$user_pass = esc_attr( $_POST['account_password'] );

$new_user_data = array(
    'user_login' => $_POST['account_username'],
    'user_pass'  => $user_pass,
    'user_email' => $_POST['account_email'],
    'role'       => 'subscriber'
);

$user_id = wp_insert_user( $new_user_data );

// Set the global user object
$current_user = get_user_by( 'id', $user_id );

// set the WP login cookie
$secure_cookie = is_ssl() ? true : false;
wp_set_auth_cookie( $user_id, true, $secure_cookie );

重定向使用wp_safe_redirect,例如

wp_safe_redirect( home_url( '/' ) );
exit;
于 2013-11-13T14:07:22.793 回答
0

而不是触摸核心文件......你可以使用这个

$secure_cookie = is_ssl();
$secure_cookie = apply_filters('secure_signon_cookie', $secure_cookie, array());
global $auth_secure_cookie;
$auth_secure_cookie = $secure_cookie;

wp_set_auth_cookie($user_id, true, $secure_cookie);
$user_info = get_userdata($user_id);
do_action('wp_login', $user_info->user_login, $user_info);

该函数wp_create_user返回刚刚创建的 user_id,您可以使用它来创建 cookie 并让用户登录。如果您愿意,可以将登录的用户重定向到个人资料或主页。

于 2021-08-15T22:23:46.150 回答
-6

感谢您的支持伙计们..我自己使用以下代码..感谢您的时间和支持:)

<i>$getdetails= mysql_fetch_array(mysql_query("SELECT * FROM `wp_users` WHERE `ID`='$user_id'"));
$username=$getdetails['user_login'];


$creds = array();
$creds['user_login'] = $username;
$creds['user_password'] = $password;
$creds['remember'] = true;

    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) ){
        echo $user->get_error_message();
    }else{
        wp_redirect( home_url() );
    }
于 2013-11-18T06:59:38.607 回答