如何在我的模板页面上显示“登录错误”和“密码丢失”?

时间:2011-09-24 作者:Rutwick Gangurde

我使用wp\\u login\\u form函数在模板中提供前端登录。它可以在登录和注销后很好地处理重定向!但是,如果用户名/密码不匹配或不存在,则会将用户重定向到admin登录页面,并出现不稳定的js错误。同样,当我试图重置密码时,它会将我带到我的后端页面,在那里我必须输入我的电子邮件以重置密码。我想在模板上显示这两个活动。我有办法做到这一点吗?

感谢您提前提供的任何帮助。

1 个回复
最合适的回答,由SO网友:Roman 整理而成

是的,这是可能的。您必须为此创建三个过滤器。

类内的管理内容

class WPSE29338_Admin {
    public static function setup() {
        add_filter(\'login_url\', array(__CLASS__, \'modifyLoginURL\'), 10, 2);
        add_filter(\'lostpassword_url\', array(__CLASS__, \'modifyLostPasswordURL\'), 10, 2);
        add_filter(\'register\', array(__CLASS__, \'modifyRegisterURL\'));
    }

    public static function modifyLoginURL($loginUrl, $redirect = \'\') {
        $loginUrl = site_url(\'login\'); // Link to login URL

        if(!empty($redirect)) {
            $loginUrl = add_query_arg(\'redirect_to\', urlencode($redirect), $loginUrl);
        }

        return $loginUrl;
    }

    public static function modifyLostPasswordURL($lostpwUrl, $redirect = \'\') {
        $lostpwUrl = wp_login_url() . \'#lostpassword\'; // Link to lostpassword URL

        if(!empty($redirect)) {
            $lostpwUrl = add_query_arg(\'redirect_to\', urlencode($redirect), $lostpwUrl);
        }

        return $lostpwUrl;
    }

    public static function modifyRegisterURL($registerUrl) {
        if(!is_user_logged_in()) {
            if (get_option(\'users_can_register\')) {
                $registerUrl = \'<a href="\' . wp_login_url() . \'#register" class="btn">\' . __(\'Register\') . \'</a>\'; // Link to register URL
            } else {
                $registerUrl = \'\';
            }
        }

        return $registerUrl;
    }
}
首先,我们需要过滤函数的输出wp_login_url() 所使用的wp_login_form() 在表单中action 属性

看看这个方法modifyLoginUrl(). 这里我们存储页面的URLlogin 变量内部$loginUrl. 此页面必须存在于WordPress中,因此请先创建它。

接下来,我们需要为函数设置一个过滤器wp_lostpassword_url()wp_register(). 基本上是一样的。站点的URL存储在变量中$lostpwUrl$registerUrl.

最后但并非最不重要的一点是,您必须在正确的操作挂钩上调用该类。对于主题,这应该是after_setup_theme 对于您可以使用的插件plugins_loaded.

主题/功能。php

add_action(\'after_setup_theme\', \'wpse29338_admin_init\');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}
插件
add_action(\'plugins_loaded\', \'wpse29338_admin_init\');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

结束

相关推荐

如何在不重定向到wp-login.php页面的情况下向此登录表单添加验证

我使用下面网站上发布的代码,创建一个硬编码的登录表单。http://www.wprecipes.com/add-a-login-form-on-your-wordpress-theme用这个或使用默认的wordpress错误消息进行验证的最佳方法是什么?对表单进行硬编码的关键在于,用户不会从内容中转移到默认的wp登录。整个登录过程中的php页面。你好,汤姆·基德尔