纯代码给wordpress网站添加前端登录功能

以下是实现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、登录失败时会显示错误提示