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

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

La publicación de hoy será solo una breve en la que le mostraré cómo instalar una pequeña característica interesante en su sitio de WordPress. Esto, si se usa de manera segura, puede ser muy conveniente. Está diseñado para su uso en sitios de WordPress que ofrecen una cuenta genérica en la que los usuarios pueden iniciar sesión. Por ejemplo, en muchas demostraciones de backend 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 publicará un aviso diciendo;

NOMBRE DEL USUARIO: manifestación
LA CONTRASEÑA: manifestación

Es un poco peatonal. ¿Seguramente podemos hacer la demostración un poco más fácil 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.

Sin embargo, podría ser útil;

  • Su sitio tiene una cuenta genérica en la que los usuarios anónimos pueden iniciar sesión.
  • Quieres un enlace de conexió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, la página Configuración).

IMPORTANTE: Nunca lo use para iniciar sesión en cuentas con poder real; por ejemplo. Cuentas de administrador / editor, etc.
Utilice este extracto con precaución.

Bien, como 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 experimentarlo de primera mano. El siguiente fragmento fue diseñado como un complemento independiente (mi preferencia personal).

Harri Bell-Thomas en Github

/*
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' );

USAR

Es muy fácil 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 solo necesita visitar; http://example.com/wp-login.php?autologin=demo

Debería ser redirigido inmediatamente a wp-admin, iniciado sesión en la cuenta especificada. Si las credenciales son incorrectas, debería ver el formulario de inicio de sesión como de costumbre.

PERSONALIZAR

Este fragmento es muy fácil de personalizar. Básicamente, solo hay 3 cosas que deberá cambiar, 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') {

        // 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. El bloque de código anterior buscará; wp-login.php? login = dummy_account

Estos valores pueden ser los que desee, pero asegúrese de evitar la configuración original de WordPress, como “sin conexión”, “acción” y “redirigir a”. La línea 4 es donde especifica el nombre de usuario para iniciar sesión; el fragmento personalizado intentará conectarse a la cuenta “ficticia”. Como probablemente pueda adivinar, la línea 7 es donde especifica la contraseña. La contraseña anterior es “pa55word”. Complete esos valores y estará listo para comenzar.

EXTENSIONES

Por el momento, nuestro fragmento solo está configurado para el inicio de sesión automático en una sola cuenta. ¿Qué pasa si queremos diferentes enlaces de inicio de sesión para diferentes cuentas? Es bastante rápido y fácil de hacer y no requiere que repita todo el fragmento de código 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' );

Básicamente, es básicamente lo mismo, pero con un bucle foreach descarado y una variedad de cuentas agregadas también. La anatomía de la función autologin () es la misma, excepto que su código se repite (usando el bucle foreach) para cada cuenta. Todos los detalles relevantes ahora se almacenan en la tabla global. El ejemplo anterior está configurado para dos cuentas, pero nuestro fragmento de código puede acomodar tantas como necesitemos. Para agregar cuentas adicionales, simplemente personalice y agregue tantos bloques de código siguientes 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: no es necesario, pero lo hice solo para eliminar todos los valores codificados de la función autologin ().

CONCLUSIÓN

Este fragmento de código 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, 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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ir arriba