前端注册表


13

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

有任何想法吗?


抱歉,“前端”是什么意思。我想我了解前端和后端的含义,但是我不了解如何在前端以外的任何地方放置表格。你是说首页吗?
Mads Skjern 2014年

Answers:


7

Jeff Starr
使用与onetrickpony建议的方法类似的方法,编写了有关前端注册,登录和密码恢复的出色教程。因此,将其作为他的回答的后续内容,并作为可能帮助您完成任务的另一资源:http :
//digwp.com/2010/12/login-register-password-code/

现在,您有两个示例如何自己编写代码并相信我-以(您自己)的方式进行此操作绝对值得。它并不难,它为您提供了任何插件都无法提供的自由灵活性可重用性


4

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

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>

您可以使用此代码,简码或仅使用通常的页面模板来创建小部件...


看起来不错,尽管似乎没有用。我找到了一个效果很好的插件,因此感谢您的帮助。
Pippin

适用于我,但我认为您需要home_url()使用当前页面的URL 进行更改,因为我的代码假定表单位于首页上。我在get_current_page_url()这里发布了一个函数,用于另一个问题,尽管不记得是哪个
onetrickpony

2

Gravity Forms是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网络(多站点)安装上自动创建站点,并将新创建的用户分配为该站点的管理员。

1

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


接近,但不是我所需要的。我需要一些可以放入现有模板中的东西。
皮蓬

是的..我..你怎么不能把它放到你的模板中?
Lynne

这是我使用简单模式登录完成的网站。purevapes.com 请注意顶部的注册和登录链接。用户永远不会离开博客的前端。您可以使用简单的HTML代码将它们合并到模板中,并且它们会将用户重定向到首页而不是管理面板。所以我不确定如何不能将其“拖放”到任何模板中。
Lynne

我的意思是在实际页面中包含“放入”,而不是作为模式窗口。这是我刚刚找到的插件:wordpress.org/extend/plugins/simplr-registration-form
Pippin

知道了 我什至没有想到模态窗口会出现问题,但是我现在可以看到有地方可以找到,而没有。感谢您的插件链接,把它扔到我的武器库中。很高兴您找到了答案:)
Lynne

0

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


看起来您的插件可能效果很好,但我无法使注册表单正常工作。登录表单显示正常,但是当我尝试进入注册表单时,它将带我进入默认的wordpress表单。有没有一种方法可以仅在页面中显示注册表?
皮蓬

那不是我写的插件:P
Tareq,

0

这是我执行此操作的一种好方法:

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

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

第一个解决方案应该执行您想要的操作。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.