-
我们在做wordpress主题 的时候经常会遇到这种情况,就是在做新闻头条的时候,由于第一篇文章已经作为头条显示出来了,那么下面如果再想调用这个目录里的文章就需要从第二篇文章开始调用,否则就会出现重复调用,那……技术教程 2022-09-17 174
-
通常,每页显示的文章数量默认为仪表板设置 > 阅读 > 博客页面至多显示 的值,您可能希望常规的文章采用这个数量,但是自定义文章类型不要采用。要更改自定义文章类型的存档页面中显示的文章数量,您可以使用带有……技术教程 2022-07-19 192
-
有网友留言,想实现WordPress在前台注册的功能,联想之前写的教程:WordPress添加投稿功能,实现方法很类似,趁着今天休息,琢磨了一下,很快实现了WordPress前台的注册的功能。下面分享具体方法: 一、添加注册表……技术教程 2022-06-02 186
-
在我们进行WordPress前端用户中心功能开发的时候,经常会需要一些自定义字段来实现我们的需求,很多的插件可以实现我们的需求,今天分享的是免插件实现添加用户自定义字段(user_meta)到用户资料的教程。 今天我们……技术教程 2022-06-02 160
-
本站整合了几个实用的前端会员中心功能,现在将代码整理分享给大家。代码的作者均为 @露兜博客。 让 WordPress 支持中文用户名 让 WordPress 支持中文用户名 既然是面向国内用户,支持中文用户名就太有必要了。 //……技术教程 2022-06-02 195
一、添加登录表单
1、首先在当前主题的目录下新建一个php文件,命名为page-login.php,然后将page.php中的所有代码复制到page-login.php中;
2、删除page-login.php开头的所有注释,即 /* 与 */ ,以及它们之间的所有内容;
3、搜索:the_content,可以查找到类似代码<?php the_content(); ?>
将其替换成代码一(注意使用UTF-8编码保存)如果你在page-login.php中找不到the_content,那么你可以查找:get_template_part,可找到类似代码:<?php get_template_part( 'content', 'page' ); ?>
将content-page.php中的所有代码替换这部分代码即可。再用下面的代码替换其中的<?php the_content(); ?>
代码一
<?php the_content(); ?> <?php if(!empty($error)) { echo '<p class="ludou-error">'.$error.'</p>'; } if (!is_user_logged_in()) { ?> <form name="loginform" method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>" class="ludou-login"> <p> <label for="log">用户名<br /> <input type="text" name="log" id="log" class="input" value="<?php if(!empty($user_name)) echo $user_name; ?>" size="20" /> </label> </p> <p> <label for="pwd">密码(至少6位)<br /> <input id="pwd" class="input" type="password" size="25" value="" name="pwd" /> </label> </p> <p class="forgetmenot"> <label for="rememberme"> <input name="rememberme" type="checkbox" id="rememberme" value="1" <?php checked( $rememberme ); ?> /> 记住我 </label> </p> <p class="submit"> <input type="hidden" name="redirect_to" value="<?php if(isset($_GET['r'])) echo $_GET['r']; ?>" /> <input type="hidden" name="ludou_token" value="<?php echo $token; ?>" /> <button class="button button-primary button-large" type="submit">登录</button> </p> </form> <?php } else { echo '<p class="ludou-error">您已登录!(<a href="'.wp_logout_url().'" title="登出">登出?</a>)</p>'; } ?>
二、添加表单处理代码
在page-login.php开头处中,将第一个 <?php
替换成代码二(注意使用UTF-8编码保存)
代码二
<?php /** * Template Name: 前台登录 * 作者:露兜 * 博客:https://www.ludou.org/ * * 2013年5月6日 : * 首个版本 * * 2013年5月21日 : * 防止刷新页面重复提交数据 */ if(!isset($_SESSION)) session_start(); if( isset($_POST['ludou_token']) && ($_POST['ludou_token'] == $_SESSION['ludou_token'])) { $error = ''; $secure_cookie = false; $user_name = sanitize_user( $_POST['log'] ); $user_password = $_POST['pwd']; if ( empty($user_name) || ! validate_username( $user_name ) ) { $error .= '<strong>错误</strong>:请输入有效的用户名。<br />'; $user_name = ''; } if( empty($user_password) ) { $error .= '<strong>错误</strong>:请输入密码。<br />'; } if($error == '') { // If the user wants ssl but the session is not ssl, force a secure cookie. if ( !empty($user_name) && !force_ssl_admin() ) { if ( $user = get_user_by('login', $user_name) ) { if ( get_user_option('use_ssl', $user->ID) ) { $secure_cookie = true; force_ssl_admin(true); } } } if ( isset( $_GET['r'] ) ) { $redirect_to = $_GET['r']; // Redirect to https if user wants ssl if ( $secure_cookie && false !== strpos($redirect_to, 'wp-admin') ) $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to); } else { $redirect_to = admin_url(); } if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) ) $secure_cookie = false; $creds = array(); $creds['user_login'] = $user_name; $creds['user_password'] = $user_password; $creds['remember'] = !empty( $_POST['rememberme'] ); $user = wp_signon( $creds, $secure_cookie ); if ( is_wp_error($user) ) { $error .= $user->get_error_message(); } else { unset($_SESSION['ludou_token']); wp_safe_redirect($redirect_to); } } unset($_SESSION['ludou_token']); } $rememberme = !empty( $_POST['rememberme'] ); $token = md5(uniqid(rand(), true)); $_SESSION['ludou_token'] = $token;
最后进入WordPress管理后台 – 页面 – 创建页面,标题为登录(可以自己起名),内容填上登录说明等,右侧可以选择模板,选择 前台登录 即可。该页面即前台登录页面。
代码补充说明
1、如果想让用户登录后跳转到指定页面,可以在登录链接后面添加名为 r 的get参数,值为跳转的链接地址,如登录页面地址为https://www.ludou.org/login,如果你想让用户登录后跳转到后台的文章列表页,可以把登录地址改成下面的地址再提供给用户即可:https://www.ludou.org/login?r=https://www.ludou.org/wp-admin/edit.php
2、如果想美化一下登录表单,可以在主题的style.css中添加以下代码:
p.ludou-error { margin: 16px 0; padding: 12px; background-color: #ffebe8; border: 1px solid #c00; font-size: 12px; line-height: 1.4em; } .ludou-login label { color: #777; font-size: 14px; cursor: pointer; } .ludou-login .input { margin: 0; color: #555; font-size: 24px; padding: 3px; border: 1px solid #e5e5e5; background: #fbfbfb; }