Quick Hack : Empêcher la connexion pour les abonnés

Suite à une question de l’ami Hervé de Infiniclick, dont je vous recommande au passage l’excellent forum (et puisque je fais de la pub, pas de jaloux, le forum de Kaddiern est très bien aussi :p), voici un petit hack à placer dans le fichier functions.php du thème de votre blog WordPress.

Un panneau sens interdit original

Son but ? Interdire aux utilisateurs Abonnés de se connecter à votre interface d’administration.

Placez donc ce bout de code dans le fichier functions.php de votre thème :

function dfr_control_login() {
	//ne s'applique pas aux contributeurs, auteurs, éditeurs, admins
	if (!current_user_can('edit_posts') ){
		wp_logout();
	}
}
add_action('wp_login','dfr_control_login');

Lorsqu’un utilisateur se connecte, l’action wp_login est déclenchée, et notre fonction s’exécute. Si l’utilisateur en question n’a pas l’autorisation d’éditer des articles (la capacité edit_posts pour WordPress), on exécute la fonction wp_logout() qui va automatiquement le déconnecter.

Les abonnés qui tenteront de se connecter seront donc tout de suite ramenés sur l’écran de login. Le gros défaut de ce hack est qu’il ne fournit aucune explication à l’utilisateur à qui l’on a interdit de se connecter, ce qui peut être assez frustrant. J’espère que cela vous donnera envie de creuser un peu plus pour trouver moyen de mieux faire, et si c’est le cas, partagez donc votre solution en commentaires !

Enfin, je vous encourage à consulter la liste des rôles et capacités de WordPress au cas où vous souhaiteriez adapter ce code pour interdire le login à un type d’utilisateur particulier 🙂

Cet article a été publié dans WordPress par . Mettez-le en favori avec son permalien.
  • Merci Julien pour ce petit bout de code.

    A la base, c’est l’un de mes contacts qui me posait la question. Je me suis rappelé de notre discussion sur la péniche et j’ai pensé à toi.

    Donc merci d’avoir pris le temps de coder ce hack.

  • Ravi de rendre service, Hervé 😉
    A vrai dire ça ne m’a pris que quelques minutes. Mais encore une fois, c’est largement améliorable !

  • Agence creation site de web

    Un des soucis majeur de WordPress et son manque de distinction entre les utilisateur, et son niveau de sécurité limite dans le sens ou une personne connectée peut modifier énormément de chose, CSS, modules…
    Je pense qu’il est important de développer ce genre de code, mais surtout il serait bien de les avoir implanter directement au niveau de l’installation.
    Cordialement

  • Pas mal, par défaut je bloque l’inscription, ce qui limite ce type de problème.
    Merci pour cette amélioration. 😉

  • On peut peut être utilisé wp_logout_url qui permet de spécifier une url de redirection qui peut être une page qui explique la raison du logout.

  • @Chiite: wp_lougout_url() ne permet malheureusement pas de déconnecter l’utilisateur, mais juste d’afficher le lien de déconnexion et de spécifier la landing page post-déconnexion.
    L’idée est à creuser 🙂