wordpress默认的注册使用的邮箱发送密码的形式,注册的时候还无法直接填写密码和昵称,这就给用户照成很多不便,那么,前台注册页面就有了需求,本站就自定义了用户注册页面,当然也有很多插件可以实现,但是css样式还是需要自定义,为了方便,也为了减少系统的插件,还是有许多站长喜欢能不用插件就不用插件的。
实现自定义注册页面分为以下几个步骤:
1、在主题目录下面新建register.php页面模板,内容如下
<?php
//下面这一句是必须的,表示当前模板的名称
/*Template Name: Register*/
//如果用户已经登陆那么跳转到首页
if (is_user_logged_in()){
//重定向浏览器
wp_safe_redirect( get_option('home') );
//确保重定向后,后续代码不会被执行
exit;
}
//获取注册页面提交时候的表单数据
$redirect_to = sanitize_user( $_REQUEST['redirect_to'] );
if( !empty($_POST['csyor_reg']) ) {
$error = '';
$sanitized_user_login = sanitize_user( $_POST['user_login'] );
$user_website = sanitize_user( $_POST['website'] );
$user_description = sanitize_user( $_POST['description'] );
$user_nickname = sanitize_user( $_POST['nickname'] );
$user_email = apply_filters( 'user_registration_email', $_POST['user_email'] );
$comment_aaa = ( isset($_POST['aaa']) ) ? trim($_POST['aaa']) : '0';
$comment_bbb = ( isset($_POST['bbb']) ) ? trim($_POST['bbb']) : '0';
$comment_subab = ( isset($_POST['subab']) ) ? trim($_POST['subab']) : '0';
// 验证邮箱
if ( $user_email == '' ) {
$error .= '<p><strong>错误</strong>:请填写电子邮件地址。</p>';
} elseif ( ! is_email( $user_email ) ) {
$error .= '<p><strong>错误</strong>:电子邮件地址不正确。</p>';
$user_email = '';
} elseif ( email_exists( $user_email ) ) {
$error .= '<p><strong>错误</strong>:该电子邮件地址已经被注册,请换一个。</p>';
}
// 验证用户名
elseif ( $sanitized_user_login == '' ) {
$error .= '<p><strong>错误</strong>:请输入登陆账号。</p>';
} elseif ( !preg_match("/^[a-zA-Z0-9_]{6,16}$/",$sanitized_user_login) ) {
$error .= '<p><strong>错误</strong>:登陆账号只能包含字母、数字、下划线,长度6到16位。</p>';
$sanitized_user_login = '';
} elseif ( username_exists( $sanitized_user_login ) ) {
$error .= '<p><strong>错误</strong>:该用户名已被注册,请再选择一个。</p>';
}
//验证密码
elseif(strlen($_POST['user_pass']) < 6){
$error .= '<p><strong>错误</strong>:密码长度至少6位。</p>';
}elseif($_POST['user_pass'] != $_POST['user_pass2']){
$error .= '<p><strong>错误</strong>:两次输入的密码必须一致。</p>';
}elseif(((int)$comment_subab)!=(((int)$comment_aaa)+((int)$comment_bbb))){
$error .= '<p><strong>错误</strong>:请输入正确的验证数字。</p>';
}
if($error == '') {
//验证全部通过进入注册信息添加
$display_name = empty($user_nickname)?$sanitized_user_login:$user_nickname;
$user_pass = $_POST['user_pass'];
$user_id = wp_insert_user( array (
'user_login' => $sanitized_user_login,
'user_pass' => $user_pass ,
'nickname' => $user_nickname,
'display_name' => $display_name,
'user_email' => $user_email,
'user_url' => $user_website,
'description' => $user_description) ) ;
//意外情况判断,添加失败
if ( ! $user_id ) {
$error .= sprintf( '<p><strong>错误</strong>:无法完成您的注册请求... 请联系<a href="mailto:%s">管理员</a>!</p>', get_option( 'admin_email' ) );
}else if (!is_user_logged_in()) {
//注册成功发送邮件通知用户
$to = $user_email;
$subject = '您在 [' . get_option("blogname") . '] 的注册已经成功';
$message = '<div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px; border-radius:5px;">
<p>' . $user_nickname . ', 您好!</p>
<p>感谢您在 [' . get_option("blogname") . '] 注册用户~</p>
<p>你的注册信息如下:<br />
账号:'. $sanitized_user_login . '<br />
邮箱:'. $user_email . '<br />
密码:'. $_POST['user_pass'] . '<br />
</p>
<p>欢迎光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a>。</p>
<p>(此郵件由系統自動發出, 請勿回覆.)</p>
</div>';
$from = "From: "" . get_option('blogname') . "" <$wp_email>";
$headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
wp_mail( $to, $subject, $message, $headers );
$user = get_userdatabylogin($sanitized_user_login);
$user_id = $user->ID;
// 自动登录
wp_set_current_user($user_id, $user_login);
wp_set_auth_cookie($user_id);
do_action('wp_login', $user_login);
wp_safe_redirect( $redirect_to );
}
}
}
?>
<!--下面部分是页面显示部分-->
<?php get_header(); ?>
<div id="roll">
<div title="回到顶部" id="roll_top"></div><div title="查看评论" id="ct"></div><div title="转到底部" id="fall"></div>
</div>
<div id="content">
<div class="main">
<div id="mapsite">当前位置: <a title="返回首页" href="<?php echo get_settings('Home'); ?>/">首页</a> > <?php the_title(); ?></div>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="left left_page">
<h2><?php the_title(); ?></h2>
<div class="article article_page">
<div class="context">
<?php the_content('Read more...'); ?>
<?php if(!empty($error)) {
//输出错误提示信息
echo '<p>'.$error.'</p>';
}
if (!is_user_logged_in()) { ?>
<form name="registerform" method="post" action="#">
<p>
<label for="user_email">电子邮箱:
<input class="input" type="text" name="user_email" id="user_email" tabIndex="1" class="input" size="25" value="<?php if(!empty($user_email)) echo $user_email; ?>"/>
</label> * 请正确输入电子邮箱,例:admin@csyor.com。
</p>
<p>
<label for="user_login">登陆账号:
<input class="input" type="text" name="user_login" id="user_login" tabIndex="2" class="input" size="25" value="<?php if(!empty($sanitized_user_login)) echo $sanitized_user_login; ?>"/>
</label> * 登陆账号只能包含字母、数字、下划线,长度5到16位。
</p>
<p>
<label for="user_pwd1">密 码:
<input class="input" id="user_pwd1" class="input" type="password" tabindex="3" size="25" name="user_pass" />
</label> * 请输入大于6位字符的密码。
</p>
<p>
<label for="user_pwd2">重复密码:
<input class="input" id="user_pwd2" class="input" type="password" tabindex="4" size="25" name="user_pass2" />
</label> * 请再次输入密码,并且确保两次输入密码一致。
</p>
<p>
<label for="nickname">昵 称:
<input class="input" id="nickname" class="input" type="text" tabindex="5" size="25" name="nickname" />
</label> 请在此输入您的显示昵称。
</p>
<p>
<label for="website">站 点:
<input class="input" id="website" class="input" type="text" tabindex="6" size="25" name="website" />
</label> 请在此输入您的站点的网址。
</p>
<p>
<label for="description">个人说明:
<textarea class="input" id="description" name="description" rows="7" cols="20"></textarea>
</label> 请在此输入您的个人说明。
</p>
<p>
<label for="subab"><?php $aaa=rand(0,9); $bbb=rand(1,9); ?>验 证:
<input class="input" type="text" name="subab" id="subab" size="25" tabindex="8" />
</label> * (<span style="color:#FF0000;"><?php echo $aaa; ?>+<?php echo $bbb; ?>=?</span>) 请输入计算结果。
</p>
<input name="aaa" value="<?php echo $aaa; ?>" type="hidden" />
<input name="bbb" value="<?php echo $bbb; ?>" type="hidden" />
<p class="submit" align="center">
<input type="submit" name="wp-submit" id="wp-submit" class="button" class="button button-primary button-large" tabindex="7" value="用户注册" />
<input type="hidden" name="csyor_reg" value="ok" />
<input type="hidden" name="redirect_to" value="<?php echo $redirect_to; ?>"/>
</p>
</form>
<?php
} else {
echo '<p>您已注册成功,并已登录!</p>';
}
?>
</div>
</div>
</div>
<!--此页面不需要评论,屏蔽掉
<div class="articles articles_page">
<?php /*comments_template(); */?>
</div>
-->
<?php endwhile; else: ?>
<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
2、后台新建页面,选择第一步新建的模板
3、把新创建的页面模板的链接放在相应的位置
关键就在第一步上,第二、三步的能看懂第一步的你一定能够自己实现的。以上就是本站实现前台注册页面的步骤,希望能给您帮助。此方法本站已经在使用,欢迎浏览讨论!
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注
评论信息
Sun2016-12-24 23:16
博主你好,我按照你的做法实现注册功能模块,但点击注册按钮时出现“无法找到该网页”,要怎么解决呀,PS:初学者,我要做网站作为毕业设计,求帮帮忙,拜托拜托!
重庆SEO2014-07-30 16:27
很不错的文章,支持非插件功能!
重庆SEO2014-07-30 17:14
有了注册功能 还有登陆功能有吗
Csyor2014-07-31 09:14
登陆功能有的,回头放出来,请关注
Csyor2014-07-31 10:16
登陆功能教程地址:https://www.csyor.com/931.html
龙笑天2016-11-12 16:43
有了登录和注册,有找回密码教程吗?期待啊,博主!
流浪汉2014-05-02 09:56
如果要保证昵称也唯一,应该怎么写呢?
Csyor2014-05-02 18:38
可以在function.php文件中自定义一个检验用户昵称是否存在的函数,然后在页面中调用判断即可
龙笑天2016-11-12 16:29
此函数怎么写呢?
No.16大街2014-01-27 11:36
很好用,希望以后多写类似教程
Csyor2014-01-27 12:09
:razz: 这是肯定的,不过得等年后喽
laiydesign2014-01-06 14:11
不对啊,提交时并不会提示错啊
Csyor2014-01-06 14:13
你可以试一下我的站点,看看会不会提示错误
laiydesign2014-01-06 14:20
嗯,你这个不错啊,非常的好,怎么弄的呀?我这就不行啊?请指教哈,有QQ吗?
Csyor2014-01-06 14:22
联系方式网站底部“Q我”
流浪人2014-01-03 22:06
挺好的实现方法,就喜欢不用插件的方法
Csyor2014-01-03 22:08
谢谢,希望多多关注本站