用代码创建未激活的用户,WordPress

时间:2011-11-14 作者:Olsi

我正在wordpress上做一个网站,我需要一些帮助
我有一个自定义注册表,用户可以在其中注册并获得特殊角色,但我想将用户保存到数据库中,作为未激活用户,以便管理员通过插件激活他们。问题是,我使用的代码只是将用户立即保存在db中,并且帐户可用。

关于如何创建未激活的新用户,有什么想法吗?

$newUser = wp_create_user($un, $pw, $em);    
        if (!$newUser || is_wp_error($newUser)) {       
            $error = "[:en]Please fill in all fields.[:it]Please fill in all fields.";
        } else {
            $userinfo = array(\'ID\'=>$newUser, \'first_name\' => $fn, \'last_name\' => $ln);   
            wp_update_user($userinfo);
            update_usermeta($newUser, \'company\', $co);
            $user = new WP_User($newUser);
            $user->remove_role(\'subscriber\');
            $user->add_role($tp);
            $success = "[:en]Your registration has been submitted for approval.[:it]Your registration has been submitted for approval.";
            wp_new_user_notification($newUser, $pw);
        }

4 个回复
SO网友:janw

Wordpress在box
这对我创建具有传统数据的用户很有用。

wp_insert_user(array(
        \'user_login\' => $username,
        \'user_pass\' => $password,
        \'user_email\' => $email,
        \'wp_user_level\' => $role,
        \'show_admin_bar_front\' => \'false\' //you probably won\'t want normal users to see the admin bar
    ));
http://codex.wordpress.org/Function_Reference/wp_insert_user
尝试添加一个完全没有权限的临时角色。

另外,我看到您正在直接尝试插入用户,而无需先验证数据
这样不太安全。

SO网友:Bouchaala Sabri

尝试将usermetakey“user\\u status”设置为2。我觉得这有点不推荐,但你应该试试。

SO网友:MathSmath

作为一般指示,我要说的是,不要立即通过电子邮件向用户发送密码。

wp\\u new\\u user\\u通知功能是可插入的,因此如果您向函数文件或插件中添加以下内容,管理员仍会收到新的用户通知,但用户本身不会。

if ( !function_exists(\'wp_new_user_notification\') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user\'s plaintext password
 */
function wp_new_user_notification($user_id, $plaintext_pass = \'\') {
    $user = new WP_User($user_id);

    $user_login = stripslashes($user->user_login);
    $user_email = stripslashes($user->user_email);

    // The blogname option is escaped with esc_html on the way into the database in sanitize_option
    // we want to reverse this for the plain text arena of emails.
    $blogname = wp_specialchars_decode(get_option(\'blogname\'), ENT_QUOTES);

    $message  = sprintf(__(\'New user registration on your site %s:\'), $blogname) . "\\r\\n\\r\\n";
    $message .= sprintf(__(\'Username: %s\'), $user_login) . "\\r\\n\\r\\n";
    $message .= sprintf(__(\'E-mail: %s\'), $user_email) . "\\r\\n";

    @wp_mail(get_option(\'admin_email\'), sprintf(__(\'[%s] New User Registration\'), $blogname), $message);

}
endif;
剩下的唯一一步就是如何“激活”用户(向他们发送密码)。根据您的用户批准工作流,您可以创建一个功能,将用户密码重置为随机密码,并通过电子邮件发送给他们。然后,您可以将此功能挂接到用户列表屏幕上的按钮。

这种方法的缺点是很难判断哪些用户处于“非活动状态”(尚未通过电子邮件发送密码)。为此,您可以回复默认的\\u password\\u nag user选项,或者您在注册时设置的自定义用户选项。

SO网友:Tommixoft

非常简单和聪明的一个:

只需在用户名和电子邮件的前面或末尾添加一些文本/数字,这样当用户尝试登录时,他将得到错误的用户名。。当管理员批准用户时,您的脚本将从用户名/电子邮件中删除添加的文本/号码,并发送电子邮件告知您的帐户现在已打开:)

简单、智能且几乎为零的编码:D

结束

相关推荐

获取GET_USERS函数的用户ID的最佳方式是什么?

我正在尝试按角色类型创建一个用户表。获取用户id的最佳实践方法是什么?我的目标是首先打印每个用户&;姓氏、用户名和电子邮件。我现在拥有的:$get_admins = array( \'blog_id\' => $GLOBALS[\'blog_id\'], \'role\' => \'administrator\', ); $blogusers = get_users($get_admins); foreach ($blog