programing

WordPress에 등록한 후 코어 php로 자동 로그인하는 방법

starjava 2023. 4. 2. 09:39
반응형

WordPress에 등록한 후 코어 php로 자동 로그인하는 방법

WordPress 사이트에 등록한 지 얼마 안 된 사용자를 자동으로 로그인시키고 원하는 URL로 리디렉션하려고 며칠째 노력하고 있습니다.

기본적으로 WordPress는 사용자 이름과 비밀번호를 전송하며 사용자는 수동으로 로그인해야 합니다.이건 완전 고통이야.이걸 어떻게 극복하지?

사용자를 DB에 성공적으로 추가하는 나만의 등록 페이지(core php 페이지)가 있습니다.하지만 요점은 사용자가 다시 로그인하는 것을 피해야 한다는 것입니다.

등록이 완료되면 자동으로 등록됩니다.redirects홈 페이지 또는 프로파일 페이지로 이동합니다.

저는 워드프레스 기능을 처음 접하는 사람입니다.적어도 (워드프레스의 핵심 기능에 대한 지식이 있는) 누군가가 방법/솔루션이라도 제안해 주시면 감사하겠습니다.

기대하는.
감사해요.

// 애드온 기능.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' );

다음은 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( home_url( '/' ) );
exit;

코어 파일을 터치하는 대신...이거 써도 돼

$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를 반환합니다.필요에 따라서, 로그인한 유저를 프로파일 또는 홈 페이지로 리다이렉트 할 수 있습니다.

응원해 주셔서 감사합니다.나는 다음 코드로 혼자 했다.시간 내주셔서 감사합니다.지원해 주셔서 감사합니다.

<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() );
    }

언급URL : https://stackoverflow.com/questions/19949876/how-to-auto-login-after-registration-in-wordpress-with-core-php

반응형