Démarrer votre site WordPress en quelques minutes

Limiter l’accès à certaines sections d’un site WordPress sans plugin

Dernière mise à jour le 27 septembre 2020 Publié le 15 août 2014
section privée WordPress

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