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
}
?>