Answers:
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>
您可以使用此代码,简码或仅使用通常的页面模板来创建小部件...
home_url()
使用当前页面的URL 进行更改,因为我的代码假定表单位于首页上。我在get_current_page_url()
这里发布了一个函数,用于另一个问题,尽管不记得是哪个
Gravity Forms是WordPress,IMO的最佳联系表单插件。Beta中有最新版本,具有用户注册附件。我已经尝试过了,效果很好。不过,这将花费您……开发人员许可证的价格为199美元。
定价页面 http://www.gravityforms.com/purchase-gravity-forms/
有关用户注册附加组件的博客文章 http://www.gravityhelp.com/
我向WordPress社区强烈推荐此插件。
详细规格:
以下是用户注册加载项的一些功能:
尝试使用simplemodal登录插件。它允许注册和登录(您必须启用用户注册),并且外观非常漂亮。
这是我执行此操作的一种好方法:
从当前的Wordpress注册表格中复制字段名称和任何其他内容。确保您的自定义表单具有相同的名称字段,包括隐藏的字段,然后仅将表单操作指向正确的注册URL:http : //www.yourblog.com/wp-login.php? action=register- 然后,您可能想要如果您不喜欢表单的处理方式,还可以更改表单在注册后如何重定向。
还有一个名为Insite Login的插件,它允许您将注册表单,登录表单和其他表单放入您网站上的页面:http : //wordpress.org/extend/plugins/insitelogin/
第一个解决方案应该执行您想要的操作。
如果您需要在注册表上填写更多字段,可以使用Profile Builder插件
它使您可以通过使用简码添加用于登录,注册和编辑配置文件的前端表单来自定义网站。