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、把新创建的页面模板的链接放在相应的位置
关键就在第一步上,第二、三步的能看懂第一步的你一定能够自己实现的。以上就是本站实现前台注册页面的步骤,希望能给您帮助。此方法本站已经在使用,欢迎浏览讨论!
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注
评论信息
Sun 2016-12-24 23:16
博主你好,我按照你的做法实现注册功能模块,但点击注册按钮时出现“无法找到该网页”,要怎么解决呀,PS:初学者,我要做网站作为毕业设计,求帮帮忙,拜托拜托!
重庆SEO 2014-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: 这是肯定的,不过得等年后喽
laiydesign 2014-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
谢谢,希望多多关注本站