-
16-10-2019 - |
题
我正在寻找一种简单的方法,将用户注册表格放置在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/
第一个解决方案应该做您想做的事情。
如果您需要在注册表上进行更多字段,则可以使用 配置文件构建器插件
它使您可以通过添加前端表单来自定义网站,以通过使用短代码来登录,注册和编辑。