WordPress : créez un modèle de page qui nécessite qu'un utilisateur soit enregistré et connecté
Nous terminions de mettre en œuvre un thème personnalisé sur un site client, et ils nous ont demandé de créer une sorte d'interaction dans laquelle certaines pages étaient réservées aux abonnés enregistrés. WordPress propose des options de visibilité pour les pages, mais cela ne convient pas à ce scénario.
- Chef – La sélection de la visibilité comme privée permet uniquement aux administrateurs et aux éditeurs d'afficher le contenu.
- Mot de passe protégé – nécessite qu’un code unique soit appliqué pour chaque page pour afficher le contenu.
Au début, nous avons pensé à implémenter des plugins tiers, mais la solution était simple. Nous pourrions créer un modèle unique qui obligerait les téléspectateurs à s'inscrire et à se connecter pour afficher la page.
Modèle WordPress : abonnés uniquement
Tout d'abord, nous avons copié le modèle de page de notre client (page.php
) dans le thème enfant. Pour créer un modèle, vous devez ajouter du code en haut de votre page :
<?php /* Template Name: Subscribers Only */ ?>
Ensuite, recherchez la ligne dans le code de votre page qui affiche le contenu. Ça devrait ressembler à ça:
<?php the_content(); ?>
Maintenant, vous devrez envelopper du code autour de cette ligne:
<?php
$redirect_url = get_permalink(); // Get the current page's URL
if (is_user_logged_in()) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Subscriber Only</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Voici une explication du code sous forme de puces :
$redirect_url = get_permalink();
: Cette ligne récupère l'URL de la page courante et la stocke dans la variable$redirect_url
.if (is_user_logged_in()) :
: Cette instruction conditionnelle vérifie si un utilisateur est déjà connecté.- Si l'utilisateur est connecté, le code contenu dans ce bloc est exécuté.
<h2><?php the_title(); ?></h2>
: Ceci affiche le titre de la page actuelle.<?php the_content(); ?>
: Ceci affiche le contenu de la page actuelle.
- Si l'utilisateur n'est pas connecté, le code contenu dans le
else
bloc est exécuté.<h2>Subscriber Only</h2>
: Ceci affiche un en-tête indiquant que le contenu est restreint.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Ceci affiche un message expliquant que le contenu est restreint à certains rôles et fournit un lien « Connexion ». Le lienhref
L'attribut est défini sur l'URL de connexion générée parwp_login_url($redirect_url)
, garantissant que les utilisateurs sont redirigés vers la page actuelle après s'être connectés.
Ce code vérifie efficacement si un utilisateur est connecté et, dans le cas contraire, l'encourage à se connecter pour accéder au contenu restreint, avec un lien qui le renvoie vers la page qu'il essayait de consulter.
Afficher par rôle d'utilisateur spécifique
Vous pouvez également limiter le contenu à des rôles d'utilisateur spécifiques si vous le souhaitez :
<?php
$allowed_roles = array('subscriber', 'editor', 'author'); // Add the roles you want to allow
$user = wp_get_current_user();
$redirect_url = get_permalink();
if (array_intersect($allowed_roles, $user->roles)) :
?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php else : ?>
<h2>Restricted Access</h2>
<p>We're sorry, the content you are trying to reach is restricted to certain roles.
<a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
<?php endif; ?>
Voici une explication du code sous forme de puces :
$allowed_roles = array('subscriber', 'editor', 'author');
: Cette ligne crée un tableau de rôles autorisés, spécifiant quels rôles d'utilisateur sont autorisés à accéder au contenu. Vous pouvez personnaliser ce tableau pour inclure les rôles que vous souhaitez autoriser.$user = wp_get_current_user();
: Ce code récupère des informations sur l'utilisateur actuel, y compris ses rôles.$redirect_url = get_permalink();
: Cette ligne stocke l'URL de la page actuelle dans le$redirect_url
variable, qui sera utilisée pour rediriger l'utilisateur vers la page actuelle après sa connexion.if (array_intersect($allowed_roles, $user->roles)) :
: Cette instruction conditionnelle vérifie si les rôles de l'utilisateur recoupent les rôles répertoriés dans le$allowed_roles
tableau. En d’autres termes, il vérifie si l’utilisateur possède l’un des rôles autorisés.- Si l'utilisateur possède l'un des rôles autorisés, le code contenu dans ce bloc est exécuté.
<h2><?php the_title(); ?></h2>
: Ceci affiche le titre de la page actuelle.<?php the_content(); ?>
: Ceci affiche le contenu de la page actuelle.
- Si l'utilisateur ne possède pas l'un des rôles autorisés, le code dans le
else
bloc est exécuté.<h2>Restricted Access</h2>
: Ceci affiche un en-tête indiquant que le contenu est restreint.<p>We're sorry, the content you are trying to reach is restricted to certain roles. <a href="<?php echo wp_login_url($redirect_url); ?>">Log in</a> to access it.</p>
: Ceci affiche un message expliquant que le contenu est restreint à certains rôles et fournit un lien « Connexion ». Le lienhref
L'attribut est défini sur l'URL de connexion générée parwp_login_url($redirect_url)
, garantissant que les utilisateurs sont redirigés vers la page actuelle après s'être connectés.
Ce code restreint efficacement l'accès à des rôles spécifiques, et si un utilisateur ne possède pas l'un des rôles autorisés, il l'invite à se connecter avec un lien qui le redirigera vers la page actuelle après s'être connecté.
Sélectionnez votre modèle
Pour utiliser la page, vous devrez sélectionner le Abonnés seulement modèle de page dans la section avancée des options de votre page (sur la barre latérale). Cela limitera la page aux lecteurs connectés ou à vos rôles définis.