Como mostrar 'login error' e 'lost password' na minha página de template?

10

Estou fornecendo login de front-end em um modelo, usando a função wp_login_form. Ele lida com o redirecionamento após o login e logout muito bem! Mas se a incompatibilidade de nome de usuário / senha, ou inexistente, o usuário for redirecionado para a página de login do administrador, com o erro shaky js. Igualmente igual é o caso quando eu estou tentando redefinir a senha, ele me leva para a página de backend me onde eu tenho que digitar meu email para redefinir a senha. Quero mostrar essas duas atividades no meu modelo. Existe uma maneira de fazer isso?

Obrigado por qualquer ajuda antecipadamente.

    
por Rutwick Gangurde 24.09.2011 / 07:02

1 resposta

9

Sim, é possível. Você tem que criar três filtros para isso.

Material do administrador dentro de uma 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;
    }
}

Primeiro, precisamos filtrar a saída da função wp_login_url() , que é usada por wp_login_form() no atributo forms action .

Veja o método modifyLoginUrl() . Aqui, armazenamos o URL da página login dentro da variável $loginUrl . Esta página deve existir dentro do WordPress, então crie primeiro.

Em seguida, precisamos de um filtro para a função wp_lostpassword_url() e wp_register() . É basicamente o mesmo. O URL do site é armazenado dentro da variável $lostpwUrl e $registerUrl .

Por último, mas não menos importante, você precisa chamar a turma no gancho de ação correto. Para temas, isso deve ser after_setup_theme e para plugins você pode usar plugins_loaded .

Temas / funções.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();
}
    
por rofflox 24.09.2011 / 14:39