Limiter l’accès à certaines sections d’un site WordPress sans plugin
Limiter l’accès à certaines sections de votre site peut être réalisé facilement en quelques minutes. La technique présentée ici est très simple à réaliser. Je l’utilise lorsque l’un de mes clients souhaite une section sécurisée, mais qu’il n’a peut-être pas le budget pour une solution plus avancée.
Créer un modèle sécurisé
Copier le fichier page.php de votre thème et renommer le template-securise.php .
Ajouter ensuite le commentaire ci-dessous dans le haut de votre modèle et sauvegardé.
<?php /* * Template name: Section sécurisé */ ?>
Ajouter la condition suivante pour détecté si l’utilisateur est connecté ou non.
if( is_user_logged_in() ) { // Utilisateur connecté }else{ // Utilisateur non connecté }
Si la fonction is_user_logged_in()
retourne VRAIE, cela signifie que l’utilisateur est connecté. Nous voulons alors qu’il puisse accéder au contenu. Ajouter donc la boucle WordPress entre le if
et le else
.
if ( have_posts() ) while ( have_posts() ) : the_post(); echo '<h1>' . get_the_title() . '</h1>'; the_content(); endwhile;
Si l’utilisateur n’est pas connecté, nous devons alors lui afficher le formulaire de connexion. Pour cela, copié simplement le formulaire qui se trouve dans la page wp-login.php.
<form name="loginform" id="loginform" action="<?php bloginfo( 'url' ); ?>/wp-login.php" method="post"> <p> <label for="user_login">Identifiant<br> <input type="text" name="log" id="user_login" class="input" value="" size="20" tabindex="10"></label> </p> <p> <label for="user_pass">Mot de passe<br> <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20"></label> </p> <p class="forgetmenot"> <label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"> Se souvenir de moi</label> </p> <p class="submit"> <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Se connecter" tabindex="100"> <input type="hidden" name="redirect_to" value="<?php the_permalink(); ?>"> <input type="hidden" name="testcookie" value="1"> </p> </form>
Ce qu’il y a d’important à ajouter dans ce formulaire est l’URL de la page en cours pour que WordPress effectue une redirection après la connexion.
<input type="hidden" name="redirect_to" value="<?php the_permalink(); ?>">
Lier le modèle à la page
Rendez-vous dans la page que vous voulez sécurisée et sélectionnée le modèle « Section sécurisée ».
Le code au complet
<?php /* * Template name: Section sécurisé */ ?> <?php if( is_user_logged_in() ) { if ( have_posts() ) while ( have_posts() ) : the_post(); echo '<h1>' . get_the_title() . '</h1>'; the_content(); endwhile; }else{ ?> <form name="loginform" id="loginform" action="<?php bloginfo( 'url' ); ?>/wp-login.php" method="post"> <p> <label for="user_login">Identifiant<br> <input type="text" name="log" id="user_login" class="input" value="" size="20" tabindex="10"></label> </p> <p> <label for="user_pass">Mot de passe<br> <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20"></label> </p> <p class="forgetmenot"> <label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"> Se souvenir de moi</label> </p> <p class="submit"> <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="Se connecter" tabindex="100"> <input type="hidden" name="redirect_to" value="<?php the_permalink(); ?>"> <input type="hidden" name="testcookie" value="1"> </p> </form> <?php } ?>