如何将为评论添加电子邮件和用户名的用户转换为注册用户?

时间:2017-02-09 作者:rhinos

我想让所有新的评论者都有一个新的帐户,而不必经过任何注册过程。这样,如果他们再次使用相同的详细信息,它将存储为他们所做的另一条评论。

我不想要求他们“注册”,而是在他们将信息放入评论表单时自动注册。

我使用的是默认的wordpress评论系统,没有任何插件。

我怎样才能让用户在将信息放入评论表单中进行评论时自动注册?

2 个回复
SO网友:Johansson

要实现这一点,请创建一个新的页面模板,并在该文件中使用此代码。然后,在评论到新页面后,使用提交表单重定向用户。

$user_login = $_POST[\'user_login\'];
$user_email = $_POST[\'user_email\'];
$errors = register_new_user($user_login, $user_email);
if ( !is_wp_error($errors) ) {
    $redirect_to = !empty( $_POST[\'redirect_to\'] ) ? $_POST[\'redirect_to\'] : \'wp-login.php?checkemail=registered\';
    wp_safe_redirect( $redirect_to );
    exit();
}
请注意user_loginuser_email 是表单输入框的名称。密码将随机生成并发送到用户的电子邮件地址。

SO网友:Spartacus

钩入comment_post 和使用wp_insert_user():

add_action(\'comment_post\',\'wpse_255850_reg_user\',10,2);
function wpse_255850_reg_user($comment_ID, $comment_approved) {
    if( 1 === $comment_approved ){
    $userdata = array(
    \'user_login\' =>  sanitize_user($_POST[\'username\']),
    \'user_email\'   =>  sanitize_email($_POST[\'user_email\']),
    \'user_pass\'  =>  NULL,
    \'role\'  => \'subscriber\',
    \'show_admin_bar_front\'  => false
                );

    $user_id = wp_insert_user( $userdata ) ;

    // On success.
    if ( ! is_wp_error( $user_id ) ) {
       wp_redirect( get_permalink() ); exit;
    }

       } //end if
    } //end function
此代码中的$\\u POST值应该反映实际注释表单的值,这里的值只是泛型值。并确保彻底清理和验证用户输入。