User Without Email?

时间:2011-07-12 作者:Mike Wheaton

在Wordpress中创建用户时,需要该用户的电子邮件地址。我正在开发的网站要求用户保持匿名(这是一项研究的一部分),我认为电子邮件是一种识别数据。用户将手动添加,因此不需要电子邮件来确认帐户或防止垃圾邮件注册。

我是否必须为每个帐户提供一个虚假的电子邮件地址,或者是否有办法将此字段留空?

6 个回复
最合适的回答,由SO网友:Milo 整理而成

这是可能的,只是在没有黑客的情况下通过用户页面不那么容易。

WordPress API将允许您插入没有电子邮件地址的用户,因此需要一个小的自定义插件来接受登录名和密码,并调用wp_insert_userwp_update_user 应该对你有用。不幸的是,我没有时间为您编写代码,但这可能会为您指明方向。

$userdata = array (\'user_login\' => \'someuser\', \'user_pass\' => \'swordfish\');
$new_user_id = wp_update_user( $userdata );

SO网友:CGodo

使用Wordpress 4.7.2,我通过以下挂钩解决了这个问题:

// This will suppress empty email errors when submitting the user form
add_action(\'user_profile_update_errors\', \'my_user_profile_update_errors\', 10, 3 );
function my_user_profile_update_errors($errors, $update, $user) {
    $errors->remove(\'empty_email\');
}

// This will remove javascript required validation for email input
// It will also remove the \'(required)\' text in the label
// Works for new user, user profile and edit user forms
add_action(\'user_new_form\', \'my_user_new_form\', 10, 1);
add_action(\'show_user_profile\', \'my_user_new_form\', 10, 1);
add_action(\'edit_user_profile\', \'my_user_new_form\', 10, 1);
function my_user_new_form($form_type) {
    ?>
    <script type="text/javascript">
        jQuery(\'#email\').closest(\'tr\').removeClass(\'form-required\').find(\'.description\').remove();
        // Uncheck send new user email option by default
        <?php if (isset($form_type) && $form_type === \'add-new-user\') : ?>
            jQuery(\'#send_user_notification\').removeAttr(\'checked\');
        <?php endif; ?>
    </script>
    <?php
}

SO网友:Tomas Buteler

根据WordPress的文档,wp_create_user 还可以插入没有电子邮件的用户,因为这是一个可选参数。您只需提供唯一的用户名和密码。

SO网友:Bryan Willis

这是一个相当古老的问题,但仍然相关。

无论如何,@米洛的想法肯定是对的。

这是我使用的,效果很好。当您想要创建用户,但更希望保持wordpress后端处于锁定状态时,这非常方便。例如,如果您有一个博客,并且希望您的内容作者将其作品提交给您,那么您可以为他们创建一个用户,而实际上不允许他们访问。或者如果你喜欢用别名写博客。或者它甚至对测试目的有用,或者我猜那些“粗略”的人想要为他们的网站编造一群假用户(你知道你是谁)。

将此添加到函数。php或将其与有用的插件(如代码段)一起使用。

function wpse_22754_insert_new_user() {

    $user_data = array(
    \'ID\' => \'\', // automatically created
    \'user_pass\' => \'swordfish\',
    \'user_login\' => \'someuser\',
    \'user_nicename\' => \'Some User\',
    \'user_email\' => \'\',
    \'display_name\' => \'John\',
    \'nickname\' => \'jsmith\',
    \'first_name\' => \'John\',
    \'last_name\' => \'John\',
    \'user_url\' => \'\',
    \'user_registered\' => \'2015-06-26 10:55:55\', // leave empty for auto
    \'role\' => get_option(\'default_role\') // administrator, editor, subscriber, author, etc
    );

    $user_id = wp_insert_user( $user_data );

    }
add_action( \'admin_init\', \'wpse_22754_insert_new_user\' );
如果要在创建用户后从后端更新用户,请添加此选项,这样可以避免收到错误/警告通知。

function wpse_22754_empty_email_error( $arg ) {
    if ( !empty( $arg->errors[\'empty_email\'] ) ) unset( $arg->errors[\'empty_email\'] );
}
add_action( \'user_profile_update_errors\', \'wpse_22754_empty_email_error\' );
如果您更愿意使用插件,则此插件最有可能:

https://wordpress.org/plugins/allow-multiple-accounts/

SO网友:Trevor

“从CSV导入用户”插件将允许您创建没有电子邮件地址的用户。我添加了。。。

last_name,first_name,display_name,user_login
Gamble,Bill,Bill Gamble,BillGamble
我们的俱乐部利用Wordpress wp\\U用户数据库,但我们需要将没有电子邮件的会员也存档

SO网友:M a n o u c h e h r

当我在youtube上搜索“如何在wordpress中创建没有电子邮件的用户”时,我找到了一种方法!

安装“代码片段”插件,在此插件中选择“添加新的”,并为其命名。例如,“Email not required code”(电子邮件不需要代码)。输入此代码:

// This will suppress empty email errors when submitting the user form
add_action(\'user profile_update_errors\' , \'my_user_profile_update_errors\', 10, 3);
function my_user_profile_update_errors($errors, $$update, $user){
$errors->remove(\'empty_email\');
}

// This will remove javascript required validation for email input
// It will remove the \'(required)\' textin the label
// Work for new user , user profile and edit user forms
add_action(\'user_new_form\', \'my_user_new_form\', 10, 1);
add_action(\'show_user_profile\', \'my_user_new_form\', 10, 1);
add_action(\'edit_user_profile\', \'my_user_new_form\', 10, 1);
function my_user_new_form($form_type) {
?>
<script type= "text/javascript">
jQuary(\'#email\').closest(\'tr\').removeClass(\'form-required\').find(\'.description\').remove();
// Uncheck send new user email option by default
<?php if (isset($form_type) $$ $form_type === \'add-new-user\') : ?>
jQuery \'#send_user_notification\').removeAttr(\'checked\');
<?php endif; ?>
</script>
<?php
}

选择“仅在管理区域运行”,然后选择“保存更改并激活”,现在检查,它可以工作了

结束

相关推荐

New post email alert

我想显示一个复选框,其中包含通过电子邮件订阅网站的选项我看到一个wordpress博客,上面的复选框旁边有以下标签通过电子邮件订阅此网站问题是我找不到显示它的插件:我尝试了Subscribe2、Post Notification和Gurken进行评论订阅。你知道我需要安装什么插件吗?