La publicación de hoy solo será breve en la que le mostraré cómo instalar una pequeña característica en su 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 back-end de WordPress, el autor creará una cuenta «demo» para que los clientes potenciales 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 parezca un poco más ágil y profesional? Le daré un fragmento rápido para iniciar sesión automáticamente en el administrador de WordPress con estas credenciales. Esto puede colocarse en el archivo de funciones de su tema o puede colocarse en su propio archivo de complemento y activarse.
Esto podría ser útil si;
- Su sitio tiene una cuenta genérica para que los usuarios anónimos inicien sesión.
- Desea un enlace de inicio de sesión de ‘un clic’.
- Desea maximizar la conversión de la demostración del producto proporcionando 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.
Utilice este fragmento con cuidado.
Utilice este fragmento con cuidado.
Bien, como he hecho 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 comenzar a experimentar con él directamente. El siguiente fragmento se ha diseñado en forma de complemento independiente (mi preferencia personal).
/*
Plugin Name: Auto Login
Plugin URI: http://hbt.io/
Version: 1.0.0
Author: Harri Bell-Thomas
Author URI: http://hbt.io/
*/
function autologin() {
// PARAMETER TO CHECK FOR
if ($_GET['autologin'] == 'demo') {
// ACCOUNT USERNAME TO LOGIN TO
$creds['user_login'] = 'demo';
// ACCOUNT PASSWORD TO USE
$creds['user_password'] = 'demo';
$creds['remember'] = true;
$autologin_user = wp_signon( $creds, false );
if ( !is_wp_error($autologin_user) )
header('Location: wp-admin'); // LOCATION TO REDIRECT TO
}
}
// ADD CODE JUST BEFORE HEADERS AND COOKIES ARE SENT
add_action( 'after_setup_theme', 'autologin' );
USO
Esto es muy sencillo de utilizar. 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 debe visitar; http://example.com/wp-login.php?autologin=demo
Debería ser redirigido inmediatamente a wp-admin, iniciado 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. Básicamente, solo hay 3 cosas que necesitará editar, y todos estos cambios se deben realizar en el siguiente bloque de código (líneas 11 a 17 del código completo)
if ($_GET['login'] == 'dummy_account') {
// ACCOUNT USERNAME TO LOGIN TO
$creds['user_login'] = 'dummy';
// ACCOUNT PASSWORD TO USE
$creds['user_password'] = 'pa55word';
En la primera línea verá la verificación condicional del parámetro URL. Se buscará el bloque de código anterior; wp-login.php? login = dummy_account
Estos valores pueden ser los que desee, pero tenga cuidado de evitar los parámetros originales de WordPress como ‘logout’, ‘action’ y ‘redirect_to’. La línea 4 es donde especifica el nombre de usuario con el que 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 estará listo para comenzar.
EXTENSIONES
Por el momento, nuestro fragmento solo está configurado para iniciar sesión automáticamente en una cuenta. ¿Qué pasa 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 todo el fragmento una y otra vez. Eche un vistazo a continuación a mi solución.
/*
Plugin Name: Auto Login
Plugin URI: http://hbt.io/
Description: Create convenient auto-login links to quickly login to generic accounts. Configure source code to make changes.
Version: 1.0.0
Author: Harri Bell-Thomas
Author URI: http://hbt.io/
*/
// Declare global var's
global $login_parameter, $accounts;
// THE PARAMETER TO CHECK FOR
// eg. http://exmaple.com/wp-login.php?param_name=account
$login_parameter = "autologin";
// ACCOUNT CODE BLOCK
$accounts[] = array(
"user" => "demo",
"pass" => "demo",
"location" => "wp-admin",
);
// END ACCOUNT CODE BLOCK
// EDIT AND REPEAT CODE BLOCK FOR AS MANY ACCOUNTS AS NEEDED
// Another example iteration
$accounts[] = array(
"user" => "tcwp",
"pass" => "demo",
"location" => "wp-admin/?tcwp-sent-me",
);
// SEE PREVIOUS EXAMPLE FOR DETAILS ABOUT THIS FUNCTION
function autologin() {
global $login_parameter, $accounts;
foreach ($accounts as $account) {
if ($_GET[$login_parameter] == $account['user']) {
$creds['user_login'] = $account['user'];
$creds['user_password'] = $account['pass'];
$creds['remember'] = true;
$autologin_user = wp_signon( $creds, false );
if ( !is_wp_error($autologin_user) )
header('Location: ' . $account['location']);
}
}
}
add_action( 'after_setup_theme', 'autologin' );
En esencia, esto es esencialmente lo mismo, pero con un bucle foreach descarado más una matriz de cuentas también. 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 tantas como necesitemos. Para agregar cuentas adicionales, simplemente personalice y agregue tantos de los siguientes bloques de código como necesite.
// ACCOUNT CODE BLOCK
$accounts[] = array(
"user" => "anotheraccount",
"pass" => "public_password",
"location" => "http://YouCanPutURLsHereToo.com/",
);
// END ACCOUNT CODE BLOCK
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 un sitio de demostración de productos, pero tiene el potencial de usarse para escenarios de inicio de sesión mucho más complejos. El resto del código debería ser bastante autoexplicativo, pero si tiene alguna pregunta sobre lo que hice o por qué lo hice, simplemente deje un comentario a continuación o envíeme un tweet. Si tiene algún comentario / sugerencia / idea, deje un comentario en la sección de comentarios a continuación.