Le post 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 se connectent et jouent avec son produit. Plus souvent qu’autrement, l’auteur affichera simplement un avis disant;

NOM D’UTILISATEUR: démo
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 maximiser la conversion de la démonstration de produit en fournissant un chemin rapide et efficace vers la démonstration, en minimisant les étapes requises.
  • Vous souhaitez diriger les visiteurs directement vers l’emplacement concerné (par exemple, la page Paramètres).

IMPORTANT: Ne l’utilisez jamais pour vous connecter à des comptes avec une réelle puissance; par exemple. Comptes administrateur / éditeur, etc.
Utilisez cet extrait avec précaution.

Ok, donc 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 directement l’expérimenter. L’extrait de code suivant a été conçu 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 devez immédiatement être redirigé vers wp-admin, connecté au compte spécifié. Si les informations d’identification sont incorrectes, 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 recherchera; wp-login.php? login = compte_dummy

Ces valeurs peuvent être ce que vous voulez, mais veillez à éviter les paramètres WordPress originaux tels que «déconnecté», «action» et «rediriger vers». La ligne 4 est l’endroit où vous spécifiez le nom d’utilisateur avec lequel vous connecter; 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!

EXTENSIONS

Pour le moment, notre extrait de code n’est configuré que pour la connexion automatique à un seul compte. Et 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 encore et encore l’extrait de code complet. Jetez un œil 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é également. L’anatomie de la fonction autologin () est identique, sauf 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 de code 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 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 de code n’est qu’une simple fonction 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 un commentaire ci-dessous ou envoyez-moi un tweet. Si vous avez des commentaires / suggestions / idées, laissez un commentaire dans la section commentaires ci-dessous!

Share: