首页 问答 正文

如何在wordpress中实现用户注册和登录功能?

注册会员 / 悠然自学 / 2023-07-11/ 浏览 131 次

在WordPress中实现用户注册和登录功能可以通过以下步骤:

  1. 创建用户注册页面:

创建一个新的页面,并在页面内容中使用以下代码:

<form name="registerform" id="registerform" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
    <input type="hidden" name="action" value="register_user">
    <p>
        <label for="user_login"><?php _e('Username'); ?><br />
        <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" /></label>
    </p>

    <p>
        <label for="user_email"><?php _e('Email'); ?><br />
        <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /></label>
    </p>

    <p class="submit">
        <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary" value="<?php esc_attr_e('Register'); ?>" />
    </p>
</form> 
  1. 处理用户注册请求:

在主题的functions.php文件中添加以下代码,用于处理用户注册请求:

function register_user() {
    if ( isset( $_POST['user_login'] ) && isset( $_POST['user_email'] ) ) {
        // 创建新用户
        $user_id = wp_create_user( $_POST['user_login'], '', $_POST['user_email'] );

        // 自动登录用户
        wp_signon( array(
            'user_login'    => $_POST['user_login'],
            'user_password' => '',
            'remember'      => true
        ) );

        if ( ! is_wp_error( $user_id ) ) {
            // 注册成功后的操作
            wp_redirect( home_url() ); // 注册成功后跳转到网站首页
            exit();
        } else {
            // 注册失败的操作
            wp_redirect( home_url( 'register' ) ); // 注册失败后跳转回注册页面
            exit();
        }
    }
}

add_action( 'admin_post_nopriv_register_user', 'register_user' );
add_action( 'admin_post_register_user', 'register_user' ); 
  1. 创建用户登录页面:

创建一个新的页面,并在页面内容中使用以下代码:

<form name="loginform" id="loginform" action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
    <input type="hidden" name="action" value="user_login">
    <p>
        <label for="user_login"><?php _e('Username'); ?><br />
        <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr( wp_unslash( $user_login ) ); ?>" size="20" /></label>
    </p>

    <p>
        <label for="user_password"><?php _e('Password'); ?><br />
        <input type="password" name="user_password" id="user_password" class="input" value="" size="25" /></label>
    </p>

    <p class="submit">
        <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary" value="<?php esc_attr_e('Log In'); ?>" />
    </p>
</form> 
  1. 处理用户登录请求:

在主题的functions.php文件中添加以下代码,用于处理用户登录请求:

function user_login() {
    if ( isset( $_POST['user_login'] ) && isset( $_POST['user_password'] ) ) {
        $user = wp_signon( array(
            'user_login'    => $_POST['user_login'],
            'user_password' => $_POST['user_password'],
            'remember'      => true
        ) );

        if ( ! is_wp_error( $user ) ) {
            // 登录成功后的操作
            wp_redirect( home_url() ); // 登录成功后跳转到网站首页
            exit();
        } else {
            // 登录失败的操作
            wp_redirect( home_url( 'login' ) ); // 登录失败后跳转回登录页面
            exit();
        }
    }
}

add_action( 'admin_post_nopriv_user_login', 'user_login' );
add_action( 'admin_post_user_login', 'user_login' ); 

请注意,上述代码只是一个示例,并未包含完整的数据验证和安全性措施。在实际使用中,应该进行数据验证和安全性保护。

大家谈论
    我的见解