以下是实现WordPress前端登录功能的完整代码方案,包含表单和功能实现:
1、将下面这段代码添加到当前主题的functions.php文件中
// 前台登录表单短代码
function frontend_login_form() {
if(!is_user_logged_in()) {
$form = '
<form method="post" action="'.esc_url(site_url('wp-login.php', 'login_post')).'">
<div class="login-form">
<p>
<label for="log">用户名</label>
<input type="text" name="log" id="log" value="'.esc_attr(wp_specialchars($user_login)).'" />
</p>
<p>
<label for="pwd">密码</label>
<input type="password" name="pwd" id="pwd" />
</p>
<p>
<input type="checkbox" name="rememberme" id="rememberme" value="forever" />
<label for="rememberme">记住我</label>
</p>
<input type="submit" name="wp-submit" id="wp-submit" value="登录" />
<input type="hidden" name="redirect_to" value="'.esc_attr($_SERVER['REQUEST_URI']).'" />
</div>
</form>
';
return $form;
} else {
return '<p>您已登录,<a href="'.wp_logout_url(home_url()).'">退出登录</a></p>';
}
}
add_shortcode('frontend_login', 'frontend_login_form');
// 处理登录错误重定向
function frontend_login_errors() {
if(isset($_GET['login']) && $_GET['login'] == 'failed') {
echo '<div class="login-error">用户名或密码错误</div>';
}
}
add_action('wp_footer', 'frontend_login_errors');
2、将下面这段代码添加到当前主题的style.css文件中
/* 前台登录表单样式 */
.login-form {
max-width: 400px;
margin: 0 auto;
padding: 20px;
background: #f9f9f9;
border: 1px solid #ddd;
border-radius: 5px;
}
.login-form p {
margin-bottom: 15px;
}
.login-form label {
display: block;
margin-bottom: 5px;
font-weight: bold;
}
.login-form input[type="text"],
.login-form input[type="password"] {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 3px;
}
.login-form input[type="submit"] {
background: #0073aa;
color: white;
padding: 10px 15px;
border: none;
border-radius: 3px;
cursor: pointer;
}
.login-error {
color: #dc3232;
background: #ffebee;
padding: 10px;
margin: 10px 0;
border: 1px solid #dc3232;
border-radius: 3px;
}
3、在需要显示登录表单的页面/文章中使用[frontend_login]短代码
4、登录失败时会显示错误提示
