Comment afficher 'erreur de connexion' et 'mot de passe perdu' sur la page de mon modèle?

10

Je fournis une connexion frontale dans un modèle, à l'aide de la fonction wp_login_form. Il gère la redirection après connexion et déconnexion assez proprement! Mais si le nom d'utilisateur / mot de passe ne correspond pas, ou est inexistant, l'utilisateur est redirigé vers la page de connexion administrateur, avec l'erreur saccadée js. Il en va de même lorsque j'essaie de réinitialiser le mot de passe. Cela me mène à la page me du backend où je dois entrer mon email pour réinitialiser le mot de passe. Je veux montrer ces deux activités sur mon modèle. Y a-t-il un moyen de le faire?

Merci de votre aide à l'avance.

    
posée Rutwick Gangurde 24.09.2011 - 07:02

1 réponse

9

Oui c'est possible. Vous devez créer trois filtres pour cela.

Trucs administrateur dans une classe

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;
    }
}

Nous devons d’abord filtrer le résultat de la fonction wp_login_url() qui est utilisée par wp_login_form() dans l’attribut forms action .

Regardez la méthode modifyLoginUrl() . Ici, nous stockons l'URL de la page login à l'intérieur de la variable $loginUrl . Cette page doit exister dans WordPress, créez-la d'abord.

Nous avons ensuite besoin d’un filtre pour les fonctions wp_lostpassword_url() et wp_register() . C'est fondamentalement la même chose. L’URL du site est stockée dans les variables $lostpwUrl et $registerUrl .

Dernier point, mais non le moindre, vous devez appeler la classe par le bon crochet d’action. Pour les thèmes, cela devrait être after_setup_theme et pour les plugins, vous pouvez utiliser plugins_loaded .

Thèmes / functions.php

add_action('after_setup_theme', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}

Plugins

add_action('plugins_loaded', 'wpse29338_admin_init');
function wpse29338_admin_init() {
    WPSE29338_Admin::setup();
}
    
réponse donnée rofflox 24.09.2011 - 14:39

Lire d'autres questions sur les étiquettes