Inicio de sesión automático de administrador de WordPress en PHP

La publicación de hoy solo será breve en la que te mostraré cómo instalar una pequeña característica en tu sitio de WordPress. Esto, si se usa de manera segura, puede ser muy conveniente. Está diseñado para usarse en sitios de WordPress que ofrecen una cuenta genérica para que los usuarios inicien sesión. Por ejemplo, en muchas demostraciones de WordPress de back-end, el autor creará una cuenta “demo” para que los posibles clientes inicien sesión y jueguen con su producto. La mayoría de las veces, el autor simplemente mostrará un aviso que dice;


NOMBRE DE USUARIO: manifestación
CONTRASEÑA: manifestación

Esto es un poco peatonal. ¿Seguramente podemos hacer que la demostración se vea un poco más simple y profesional? Le daré un fragmento rápido para iniciar sesión automáticamente en el administrador de WordPress con estas credenciales. Esto se puede colocar en el archivo de funciones de su tema, o se puede poner en su propio archivo de complemento y activar.

Esto podría ser útil si;

  • Su sitio tiene una cuenta genérica para usuarios anónimos para iniciar sesión.
  • Desea un enlace de inicio de sesión de “un clic”.
  • Desea maximizar la conversión de demostración del producto al proporcionar una ruta rápida y eficiente a la demostración, minimizando los pasos necesarios.
  • Desea dirigir a los visitantes directamente a la ubicación relevante (por ejemplo, página de configuración).

IMPORTANTE: Nunca use esto para iniciar sesión en cuentas con poder real; p.ej. Cuentas de administrador / editor, etc..
Usa este fragmento con cuidado.

Bien, como lo hice en mis otros tutoriales, primero les daré el código completo y anotado para que aquellos de ustedes que no son fanáticos de la lectura puedan experimentar directamente con él. El siguiente fragmento ha sido diseñado en forma de un complemento independiente (mi preferencia personal).

Harri Bell-Thomas en Github

/ *
Nombre del complemento: Inicio de sesión automático
URI del complemento: http://hbt.io/
Versión: 1.0.0
Autor: Harri Bell-Thomas
Autor URI: http://hbt.io/
* /

función autologin () {
// PARÁMETRO A VERIFICAR
if ($ _GET ['autologin'] == 'demo') {

// NOMBRE DE USUARIO DE LA CUENTA PARA INICIAR SESIÓN
$ creds ['user_login'] = 'demo';

// CONTRASEÑA DE CUENTA A UTILIZAR
$ creds ['user_password'] = 'demo';

$ creds ['recordar'] = verdadero;
$ autologin_user = wp_signon ($ creds, falso);

if (! is_wp_error ($ autologin_user))
encabezado ('Ubicación: wp-admin'); // UBICACIÓN PARA REDIRECTAR A
}
}
// AGREGAR CÓDIGO ANTES DE ENVIAR LOS CABEZALES Y LAS COOKIES
add_action ('after_setup_theme', 'autologin');

USO

Esto es muy simple de usar. El nombre de usuario y la contraseña de la cuenta se especifican en el archivo del complemento (código anterior), y para iniciar sesión simplemente necesita visitar; http://example.com/wp-login.php?autologin=demo

Debería ser redirigido inmediatamente a wp-admin, iniciar sesión en la cuenta especificada. Sin embargo, si las credenciales son incorrectas, debería ver el formulario de inicio de sesión como es normal.

PERSONALIZAR

Este fragmento es muy fácil de personalizar. Esencialmente, solo debe editar 3 cosas, y todos estos cambios deben realizarse en el siguiente bloque de código (líneas 11 a 17 del código completo)

if ($ _GET ['login'] == 'dummy_account') {

// NOMBRE DE USUARIO DE LA CUENTA PARA INICIAR SESIÓN
$ creds ['user_login'] = 'dummy';

// CONTRASEÑA DE CUENTA A UTILIZAR
$ creds ['user_password'] = 'pa55word';

En la primera línea verá la comprobación condicional para el parámetro URL. El bloque de código anterior verificará; wp-login.php? login = dummy_account

Estos valores pueden ser lo que desee, pero tenga cuidado de evitar los parámetros originales de WordPress como “desconectado”, “acción” y “redireccionar”. La línea 4 es donde especifica el nombre de usuario para iniciar sesión; el fragmento de código personalizado intentará iniciar sesión en la cuenta “ficticia”. Como probablemente pueda adivinar, la línea 7 es donde especifica la contraseña. La contraseña anterior es “pa55word”. Complete estos valores y debería estar listo para comenzar!

EXTENSIONES

Por el momento, nuestro fragmento solo está configurado para iniciar sesión automáticamente en una cuenta. ¿Qué sucede si queremos diferentes enlaces de inicio de sesión para diferentes cuentas? Esto es bastante rápido y fácil de hacer y no requiere que repita el fragmento completo una y otra vez. Echa un vistazo a mi solución a continuación.

/ *
Nombre del complemento: Inicio de sesión automático
URI del complemento: http://hbt.io/
Descripción: Cree convenientes enlaces de inicio de sesión automático para iniciar sesión rápidamente en cuentas genéricas. Configurar el código fuente para realizar cambios.
Versión: 1.0.0
Autor: Harri Bell-Thomas
Autor URI: http://hbt.io/
* /

// Declarar var globales
$ global login_parameter, $ cuentas;

// EL PARÁMETRO PARA VERIFICAR
// p.ej. http://exmaple.com/wp-login.php?param_name=account
$ login_parameter = "autologin";

// BLOQUE DE CÓDIGO DE CUENTA
$ cuentas [] = matriz (
"user" => "demo",
"pass" => "demo",
"location" => "wp-admin",
);
// FINALIZAR BLOQUE DE CÓDIGO DE CUENTA

// EDITAR Y REPETIR BLOQUEO DE CÓDIGOS PARA CUANTAS CUENTAS, según sea necesario

// Otro ejemplo de iteración
$ cuentas [] = matriz (
"user" => "tcwp",
"pass" => "demo",
"location" => "wp-admin /? tcwp-sent-me",
);


// VER EJEMPLO ANTERIOR PARA DETALLES SOBRE ESTA FUNCIÓN
función autologin () {
$ global login_parameter, $ cuentas;
foreach ($ cuentas como $ cuenta) {
if ($ _GET [$ login_parameter] == $ cuenta ['usuario']) {
$ creds ['user_login'] = $ cuenta ['usuario'];
$ creds ['user_password'] = $ cuenta ['pass'];
$ creds ['recordar'] = verdadero;
$ autologin_user = wp_signon ($ creds, falso);
if (! is_wp_error ($ autologin_user))
header ('Ubicación:'. $ cuenta ['ubicación']);
}
}
}
add_action ('after_setup_theme', 'autologin');

En esencia, esto es esencialmente lo mismo, pero con un descarado bucle foreach más una matriz de cuentas también incorporada. La anatomía de la función autologin () es idéntica, excepto por el hecho de que su código se repite (usando el bucle foreach) para cada cuenta. Todos los detalles relevantes ahora se almacenan en la matriz global. El ejemplo anterior está configurado para 2 cuentas, pero nuestro fragmento puede acomodar todas las que necesitemos. Para agregar cuentas adicionales, simplemente personalice y agregue tantos bloques de código como necesite.

// BLOQUE DE CÓDIGO DE CUENTA
$ cuentas [] = matriz (
"user" => "otra cuenta",
"pass" => "public_password",
"location" => "http://YouCanPutURLsHereToo.com/",
);
// FINALIZAR BLOQUE DE CÓDIGO DE CUENTA

También notará que también moví el nombre del parámetro a una variable global: esto no es necesario, pero lo hice simplemente para eliminar todos los valores codificados de la función autologin ().

CONCLUSIÓN

Este fragmento es solo una función simple diseñada para un uso ligero, como en el sitio de demostración de un producto, pero tiene el potencial de ser utilizado para escenarios de inicio de sesión mucho más complejos. El resto del código debería explicarse por sí mismo, pero si tiene alguna pregunta sobre lo que he hecho o por qué lo he hecho, simplemente deje un comentario a continuación o twittee. Si tiene algún comentario / sugerencia / idea, deje un comentario en la sección de comentarios a continuación!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map