显示前端用户注册表的简单方式是什么?

时间:2011-01-17 作者:Pippin

我正在寻找一种简单的方法,将用户注册表放在WordPress网站的前端。我已经使用wp\\u login\\u form()将登录表单放在前端,但现在我需要对注册表单执行同样的操作。

有什么想法吗?

7 个回复
最合适的回答,由SO网友:Michal Mau 整理而成

Jeff Starr wrote a great tutorial on front-end registration, login and password recovery
采用类似的方法suggested by onetrickpony.因此,将此作为他的回答的后续内容,并作为另一个可能帮助您完成任务的资源:
http://digwp.com/2010/12/login-register-password-code/

现在,您有两个例子可以自己编写代码,相信我,这样做(您自己)绝对值得。没那么难freedom, flexibilityreusability 这是任何插件都无法提供的。

SO网友:onetrickpony

如果你想自己解决这个问题,我用以下方法:

add_action(\'template_redirect\', \'register_a_user\');
function register_a_user(){
  if(isset($_GET[\'do\']) && $_GET[\'do\'] == \'register\'):
    $errors = array();
    if(empty($_POST[\'user\']) || empty($_POST[\'email\'])) $errors[] = \'provide a user and email\';
    if(!empty($_POST[\'spam\'])) $errors[] = \'gtfo spammer\';

    $user_login = esc_attr($_POST[\'user\']);
    $user_email = esc_attr($_POST[\'email\']);
    require_once(ABSPATH.WPINC.\'/registration.php\');

    $sanitized_user_login = sanitize_user($user_login);
    $user_email = apply_filters(\'user_registration_email\', $user_email);

    if(!is_email($user_email)) $errors[] = \'invalid e-mail\';
    elseif(email_exists($user_email)) $errors[] = \'this email is already registered, bla bla...\';

    if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = \'invalid user name\';
    elseif(username_exists($sanitized_user_login)) $errors[] = \'user name already exists\';

    if(empty($errors)):
      $user_pass = wp_generate_password();
      $user_id = wp_create_user($sanitized_user_login, $user_pass, $user_email);

      if(!$user_id):
        $errors[] = \'registration failed...\';
      else:
        update_user_option($user_id, \'default_password_nag\', true, true);
        wp_new_user_notification($user_id, $user_pass);
      endif;
    endif;

    if(!empty($errors)) define(\'REGISTRATION_ERROR\', serialize($errors));
    else define(\'REGISTERED_A_USER\', $user_email);
  endif;
}
该代码与用户注册页面中的代码几乎相同。

然后在模板中添加表单:

<?php
  if(defined(\'REGISTRATION_ERROR\'))
    foreach(unserialize(REGISTRATION_ERROR) as $error)
      echo "<div class=\\"error\\">{$error}</div>";
  // errors here, if any

  elseif(defined(\'REGISTERED_A_USER\'))
    echo \'a email has been sent to \'.REGISTERED_A_USER;
?>
<form method="post" action="<?php echo add_query_arg(\'do\', \'register\', home_url(\'/\')); ?>">
  <label>
    User:
    <input type="text" name="user" value=""/>
  </label>

  <label>
    Email:
   <input type="text" name="email" value="" />
  </label>

  <label>
    Delete this text:
   <input type="text" name="spam" value="some_crappy_spam_protection" />
  </label>

  <input type="submit" value="register" />
</form>
你可以用这个创建一个小部件,一个短代码,或者只是一个普通的页面模板。。。

SO网友:Lynne

尝试SimpleModel登录插件。它允许注册和登录(您必须启用用户注册),它的外观非常漂亮。

SO网友:Carson

Gravity Forms是国际海事组织WordPress的最佳联系人表单插件。最新版本的beta版有一个用户注册插件。我试过了,效果很好。但这会让你付出代价。。。开发者许可证要199美元。

定价页http://www.gravityforms.com/purchase-gravity-forms/

关于用户注册插件的博客帖子http://www.gravityhelp.com/

我向WordPress社区强烈推荐这个插件。

Detailed Specifications:

以下是用户注册加载项的一些功能:

用户注册–通过将表单字段映射到WordPress中可用的用户注册字段,设置表单以注册用户

SO网友:Tareq

You may use Theme My Login plugin

SO网友:Dwayne Charrington

这里有一个简单易行的方法:

复制当前Wordpress注册表中的字段名和任何其他内容。确保自定义表单具有相同的名称字段(包括隐藏字段),然后仅将表单操作指向正确的注册url:http://www.yourblog.com/wp-login.php?action=register - 如果您不喜欢表单的处理方式,那么您可能还需要更改表单在注册后重定向的方式。

还有一个名为Insite Login的插件,它允许您将注册表、登录表和其他内容放入您网站的页面:http://wordpress.org/extend/plugins/insitelogin/

但是,第一个解决方案应该做您希望它做的事情。

SO网友:Cristian Dumitru Antohe

如果您需要注册表上的更多字段,可以使用Profile Builder plugin

它允许您通过添加前端表单来定制您的网站,以便通过使用短代码登录、注册和编辑配置文件。

结束

相关推荐

找不到cForms操作处理程序页

我在任何地方都找不到cforms插件的操作处理程序页面。我想使用post值在cforms插件的action handler页面中编写一些函数。