L'article d'aujourd'hui ne sera qu'un court article dans lequel je vais vous montrer comment installer une petite fonctionnalité intéressante sur votre site WordPress. Ceci, s'il est utilisé en toute sécurité, peut être très pratique. Ceci est conçu pour être utilisé sur les sites WordPress qui offrent un compte générique auquel les utilisateurs peuvent se connecter. Par exemple, sur de nombreuses démos WordPress backend, l'auteur créera un compte “démo” pour que les clients potentiels puissent se connecter et jouer avec son produit. Le plus souvent, l'auteur affichera simplement un avis disant;

NOM D'UTILISATEUR: démo
LE MOT DE PASSE: démo

C'est un peu piéton. Nous pouvons sûrement rendre la démo un peu plus simple et professionnelle ? Je vais vous donner un extrait rapide pour vous connecter automatiquement à l'administrateur WordPress avec ces informations d'identification. Cela peut soit être déposé dans le fichier de fonctions de votre thème, soit être placé dans son propre fichier de plugin et activé.

Cela pourrait être utile si;

  • Votre site dispose d'un compte générique auquel les utilisateurs anonymes peuvent se connecter.
  • Vous voulez un lien de connexion en un clic.
  • Vous souhaitez optimiser la conversion des démos de produits en fournissant un chemin rapide et efficace vers la démo, en minimisant les étapes requises.
  • Vous souhaitez diriger les visiteurs directement vers l'emplacement pertinent (par exemple, la page Paramètres).

IMPORTANT: Ne l'utilisez jamais pour vous connecter à des comptes avec un réel pouvoir ; par exemple. Comptes administrateur/éditeur, etc.
Utilisez cet extrait avec précaution.

Ok, comme je l'ai fait dans mes autres tutoriels, je vais d'abord vous donner le code complet et annoté afin que ceux d'entre vous qui ne sont pas fans de lecture puissent commencer à l'expérimenter. L'extrait suivant a été conçu sous la forme d'un plugin autonome (ma préférence personnelle).

Harri Bell-Thomas sur 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' );

USAGE

C'est très simple à utiliser. Le nom d'utilisateur et le mot de passe du compte sont spécifiés dans le fichier du plugin (code ci-dessus), et pour vous connecter, il vous suffit de visiter ; http://example.com/wp-login.php?autologin=demo

Vous devriez être immédiatement redirigé vers wp-admin, connecté au compte spécifié. Si les informations d'identification sont erronées, vous devriez simplement voir le formulaire de connexion comme d'habitude.

PERSONNALISER

Cet extrait est très facile à personnaliser. Il n'y a essentiellement que 3 choses que vous devrez modifier, et toutes ces modifications doivent être apportées dans le bloc de code suivant (lignes 11 à 17 du code complet)

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

        // ACCOUNT USERNAME TO LOGIN TO
        $creds['user_login'] = 'dummy';

        // ACCOUNT PASSWORD TO USE
        $creds['user_password'] = 'pa55word';

Sur la première ligne, vous verrez la vérification conditionnelle du paramètre URL. Le bloc de code ci-dessus vérifiera; wp-login.php?login=compte_fictif

Ces valeurs peuvent être ce que vous voulez, mais veillez à éviter les paramètres originaux de WordPress tels que ‘loggedout', ‘action' et ‘redirect_to'. La ligne 4 est l'endroit où vous spécifiez le nom d'utilisateur avec lequel vous vous connectez ; l'extrait de code personnalisé tentera de se connecter au compte “factice”. Comme vous pouvez probablement le deviner, la ligne 7 est l'endroit où vous spécifiez le mot de passe. Le mot de passe ci-dessus est ‘pa55word'. Remplissez ces valeurs et vous devriez être prêt à partir !

PROLONGATIONS

Pour le moment, notre extrait n'est configuré que pour la connexion automatique à un seul compte. Et si nous voulons différents liens de connexion pour différents comptes ? C'est assez rapide et facile à faire et ne vous oblige pas à répéter l'extrait entier encore et encore. Jetez un oeil ci-dessous à ma solution.

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

À la base, c'est essentiellement la même chose, mais avec une boucle foreach effrontée et un tableau de comptes ajoutés également. L'anatomie de la fonction autologin() est identique, à l'exception du fait que son code est répété (à l'aide de la boucle foreach) pour chaque compte. Tous les détails pertinents sont maintenant stockés dans le tableau global. L'exemple ci-dessus est configuré pour 2 comptes, mais notre extrait peut en accueillir autant que nécessaire. Pour ajouter des comptes supplémentaires, personnalisez et ajoutez simplement autant de blocs de code suivants que nécessaire.

// ACCOUNT CODE BLOCK
$accounts[] = array(
				"user" => "anotheraccount",
				"pass" => "public_password",
				"location" => "http://YouCanPutURLsHereToo.com/",
			  );
// END ACCOUNT CODE BLOCK

Vous remarquerez également que j'ai également déplacé le nom du paramètre vers une variable globale : ce n'est pas nécessaire, mais je l'ai fait simplement pour supprimer toutes les valeurs codées en dur de la fonction autologin().

CONCLUSION

Cet extrait n'est qu'une fonction simple conçue pour une utilisation légère, comme sur un site de démonstration de produit, mais il a le potentiel d'être utilisé pour des scénarios de connexion beaucoup plus complexes. Le reste du code devrait être assez explicite, mais si vous avez des questions sur ce que j'ai fait, ou pourquoi je l'ai fait, laissez simplement un commentaire ci-dessous ou tweetez-moi. Si vous avez des commentaires/suggestions/idées, laissez un commentaire dans la section des commentaires ci-dessous !

Laisser un commentaire