inicie sesión en wordpress con Obtener variables en lugar de Publicar

2

Estoy usando swish-e para indexar mi sitio y documentos corporativos. El problema es que necesito iniciar sesión en wordpress a través de obtener variables. El inicio de sesión de Wordpress usa la variable de publicación, pero necesito iniciar sesión con las variables GET

  

enlace

¿Hay alguna manera fácil de hacerlo? No me importa cambiar los archivos principales, es que no hay otra opción.

Eché un vistazo a wp-login.php pero no tengo idea de cómo hacer esto.

Saludos

    
pregunta chifliiiii 27.10.2011 - 00:12

1 respuesta

4

Nunca es una buena idea usar variables GET para nombres de usuario y contraseñas. Pero de todos modos, algo como lo siguiente debería funcionar

if(isset($_GET['log']) && isset($_GET['pwd'])){
    $creds = array();
    $creds['user_login'] = $_GET['log'];
    $creds['user_login'] = $_GET['pwd'];
    $creds['remember'] = true; //Do you want the log-in details to be remembered?

    $user = wp_signon( $creds, false );
    if ( is_wp_error($user) )
       echo $user->get_error_message(); //Display error message if log-in fails
}

Puede poner esto en una plantilla y luego crear una página utilizando esa plantilla para crear una página de inicio de sesión alternativa. En ese caso, querrá ir a: http: // [url of page]? Log = username & pwd = password

Para obtener enlace , deberá ingresar el código anterior en el wp -login.php core file. En lugar de adaptar el código (que se sobrescribirá la próxima vez que actualice WordPress), recomiendo usar un enlace. Me gusta, así que (ponga esto en su functions.php o en un complemento):

add_action('init', 'GET_login');
function GET_login() {
    //Check that we are on the log-in page
    if(in_array($GLOBALS['pagenow'], array('wp-login.php'))):

    //Check that log and pwd are set
        if(isset($_GET['log']) && isset($_GET['pwd'])):
            $creds = array();
            $creds['user_login'] = $_GET['log'];
            $creds['user_password'] = $_GET['pwd'];
            $creds['remember'] = true; //Do you want the log-in details to be remembered?

            //Where do we go after log-in?
            $redirect_to = admin_url('profile.php');

            //Try logging in
            $user = wp_signon( $creds, false );

            if ( is_wp_error($user) ){
                //Log-in failed
            }else{
                //Logged in, now redirect
                $redirect_to = admin_url('profile.php');
                wp_safe_redirect($redirect_to);
            exit();
            }
        endif;
    endif;
    //If we are not on the log-in page or credentials are not set, carry on as normal
}

Explicación: Nuestra función se ejecuta utilizando init hook. Primero verifica que estemos en la página ./wp-login.php , y luego que las variables log y pwd estén configuradas. Si no, seguimos de forma normal. Si lo son, intentamos un inicio de sesión, utilizando wp_signon . Si tenemos éxito, somos redirigidos (a donde quieras), de lo contrario, si falla, hacemos algo (¿errores de visualización, tal vez?).

Espero que ayude

    
respondido por el Stephen Harris 27.10.2011 - 01:52

Lea otras preguntas en las etiquetas