L’article d’aujourd’hui ne sera que court 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. Plus souvent qu’autrement, 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 rationalisée et professionnelle ? Je vais vous donner un extrait rapide pour vous connecter automatiquement à l’administrateur WordPress avec ces informations d’identification. Cela peut être soit déposé dans le fichier de fonctions de votre thème, soit 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 maximiser la conversion de la démo du produit 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: n’utilisez jamais ceci pour vous connecter à des comptes avec un pouvoir réel ; par exemple. Comptes administrateur/éditeur, etc.
Utilisez cet extrait avec précaution.
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 se mettre directement à l’expérimenter. L’extrait suivant a été stylisé sous la forme d’un plugin autonome (ma préférence personnelle).
/*
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 immédiatement être 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 éditer, et toutes ces modifications sont à faire 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=dummy_account
Ces valeurs peuvent être celles que vous voulez, mais veillez à éviter les paramètres WordPress d’origine tels que « loggedout », « action » et « redirect_to ». La ligne 4 est l’endroit où vous spécifiez le nom d’utilisateur avec lequel vous connecter ; l’extrait de code personnalisé essaiera de se connecter au compte « fictif ». 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 !
RALLONGES
Pour le moment, notre extrait n’est configuré que pour la connexion automatique à un seul compte. Que se passe-t-il si nous voulons des liens de connexion différents 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 également. L’anatomie de la fonction autologin() est identique, à l’exception du fait que son code est répété (en utilisant 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 nous en avons besoin. Pour ajouter des comptes supplémentaires, personnalisez simplement et ajoutez autant de blocs de code suivants que vous le souhaitez.
// 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 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 commentaires ci-dessous !