我正在寻找一种简单的方法,将用户注册表格放置在WordPress网站的前端。我已经使用wp_login_form()将登录表单放在前端,但是现在我需要使用注册表单进行同样的操作。

有任何想法吗?

有帮助吗?

解决方案

杰夫·斯塔尔(Jeff Starr)写了一个关于前端注册,登录和密码恢复的出色教程
采用类似的方法 由Onetrickpony建议。因此,将其作为他的回答的跟进,以及可能帮助您完成它的另一种资源:
http://digwp.com/2010/12/login-register-password-code/

现在,您有两个示例如何自己编码并相信我 - 绝对值得这样做。这并不难,它给了你 自由, 灵活性可重复使用 没有插件可以提供。

其他提示

如果您想自己处理,这就是我使用的:

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>

您可以使用此窗口小部件,短代码或通常的页面模板...

重力表格是WordPress,IMO的最佳接触表插件。最新版本在Beta中具有用户注册附加组件。我已经尝试过,它效果很好。不过,这将花费您……开发人员许可证的价格为199美元。

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

博客文章谈论用户注册附加http://www.gravityhelp.com/

我强烈推荐此插件给WordPress社区。

详细规格:

以下是用户注册附加组件的一些功能:

  • 用户注册 - 设置表单来注册用户,通过将您的表单字段映射到WordPress中的可用用户注册字段。
  • 用户元 - 轻松填充用户元数据,例如生物,即时消息ID,名字,姓氏以及自定义用户元数据,以适应您的需求。
  • BuddyPress集成 - 作为用户注册过程的一部分,填充BuddyPress配置文件字段数据。目前与BuddyPress v1.2.6合作。
  • 付款集成 - 在用户注册发生之前需要付款。包括对PayPal订阅的支持,并在取消订阅时更改用户角色或删除用户。
  • 密码字段 - 用户注册附加组件将密码字段添加到重力表格中,以供您表格使用。密码字段包括确认选项以及内置的密码强度检查器选项。
  • 帖子作者 - 将用户注册附加组件集成并在单个表单上创建,以便创建的帖子的作者是由附加组件注册的用户。
  • 网站创建 - 在WordPress网络(多站点)上自动创建站点,并将新创建的用户分配为网站的管理员。

尝试SimpleModal登录插件。它允许注册和登录(您必须启用用户注册),并且外观很好。

您可以使用 主题是我的登录 插入

这是我这样做的一个不错的简单方法:

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

还有这个称为INSITE登录名的插件,可让您以注册表格,登录表格和其他内容放入网站上的页面: http://wordpress.org/extend/plugins/insitelogin/

第一个解决方案应该做您想做的事情。

如果您需要在注册表上进行更多字段,则可以使用 配置文件构建器插件

它使您可以通过添加前端表单来自定义网站,以通过使用短代码来登录,注册和编辑。

许可以下: CC-BY-SA归因
scroll top