Votre compte d’accès à l’administration de votre WordPress est protégé par un mot de passe que vous avez choisi lors de sa création. Parmi les membres inscrits sur votre site, on peut trouver des utilisateurs qui peuvent s’y connecter pour commenter, mais aussi des auteurs ou des contributeurs qui rédigent des articles. Aussi, vous souhaiteriez ajouter un mot de passe commun pour tout le monde, en plus du mot de passe personnel : un mot de passe pour le site.
Ajout du nouveau champ dans le formulaire de connexion
Avec le hook login_form, il est possible d’ajouter du code HTML dans le formulaire de connexion. On en profite pour insérer le champ réservé au mot de passe supplémentaire.
Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :
function baw_login_form_add_field() { ?>
<p>
<label>Mot de passe du site<br />
<input name="site_pass" tabindex="30" type="password" class="input" id="site_pass" /></label><br />
Besoin d'un mot de passe ? <a href="/contact">Contactez nous</a> !
</p>
<?php
}
add_action( 'login_form', 'baw_login_form_add_field' );
Traiter le nouveau mot de passe
Sur le hook authenticate, on peut empêcher un membre valide (on entend par là un membre qui a correctement entré toutes les autres informations) de se connecter. On le fait ici en vérifiant la valeur du mot de passe envoyée dans le formulaire de connexion dont le nom du champ est site_pass.
Copier le code-ci dessous dans le fichier functions.php présent à la racine de notre votre thème :
function baw_login_authenticate( $raw_user, $username ) {
// Le nouveau pass supplémentaire
$new_password = 'ceci est un super mot de passe a retenir';
if( !empty( $username ) && ( !isset( $_POST['site_pass'] ) || $_POST['site_pass']!=$new_password ) ) {
// on secoue la fenêtre de login
add_action( 'login_head', 'wp_shake_js', 12 );
// et on court-circuite la fin du login en renvoyant une erreur
return new WP_Error( 'authentication_failed', '<strong>ERREUR</strong>: Le mot de passe du site est incorrect.' );
}
// ... sinon on renvoie ce qui en donné en entrée
return $raw_user;
}
add_filter('authenticate', 'baw_login_authenticate', 999, 2 );
Voici le résultat en image :

Vous voilà avec un mot de passe supplémentaire pour votre site !
Mots-clés: php username wordpress






Je découvre !
Du coup on peut s’en servir pour faire un Captcha light non ? Inserer une image qui demande d’écrire le resultat de 2 + trois par exemple …
Bien sûr, avec ça tu as une bonne base. Si tu en fait un captcha partage le ici ! À bientôt
Excelent, c’est le top pour les mots de passe des membres qui utilisent l’interface! merci pour cet article!
Bonjour,
Pourriez-vous m’indiquer comment insérer le champ réservé au mot de passe supplémentaire ?
Merci par avance,
-Jo
@joseph: tu peux copier coller chaque morceau de code de cet article et le mettre à la fin (avant le ?> si il existe) du fichier « functions.php » de ton thème.
A+
C’est parfait, merci Julio!
Si vous souhaitez aller plus loin dans la sécurité à ce niveau là, je vous propose aussi mon plugin « Baw More Secure login » qui est un niveau supérieur à cette astuce, mais basé sur cette astuce : http://baw.li/msl
Merci beaucoup. Vraiment utile en production cette astuce. A tweeter …
Idem. Je pense que je vais mettre ceci en place sur les sites clients en prod
Super je suis content que ça vous plaise et que ça serve aussi ! À bientôt
Bonjour,
Merci pour vos infos. J’aurai une question, comment faire pour bloquer une partie du site, par exemple mettre une page de téléchargement ou seuls des internautes ayant un mot de passe peuvent y accéder?
Pour me joindre: lykxie@yahoo.fr
Merci d’avance pour votre attention!
@LYKXIE: Il suffit de créer votre page et de lui mettre un mot de passe
Euh crée une page et passe son statut en privé ?