web-dev-qa-db-fra.com

Créer une page WordPress protégée par un nom d'utilisateur et un mot de passe

Je dois créer une page privée, qui ne sera visible que par les utilisateurs qui ont un nom d'utilisateur et un mot de passe.

J'ai pu créer une page protégée par un nom d'utilisateur et un mot de passe. Désormais, les utilisateurs sont abonnés. Par conséquent, ils ne peuvent pas voir la page privée par défaut. Est-il possible de rendre la page privée visible pour les abonnés?.

Je vous remercie,

4
Neha Patel

Pourquoi ne pas considérer un modèle spécifique qui teste pour voir si l'utilisateur est connecté en utilisant quelque chose comme:

if ( is_user_logged_in() ) {
   // your code for logged in user 
  } else {
    // your code for logged out user (e.g. a "you must be logged in" message)
  }

Vous pouvez même aller jusqu'à ajouter un champ personnalisé que vous utilisez pour indiquer que la page en question est privée pour les utilisateurs connectés, puis dans votre modèle de template page.php, vérifiez la présence de la valeur de ce champ avant de déterminer le modèle de page à utiliser. .... Je fais quelque chose de similaire à celui-ci pour les pages qui nécessitent que les utilisateurs soient connectés et cela fonctionne très bien.

Cela élimine également la nécessité pour vous de donner à quiconque un mot de passe pour accéder à une page. Ils devront simplement être connectés en utilisant leurs propres informations d'identification.

MISE À JOUR: je pensais développer ma réponse pour aider les personnes qui ne savent peut-être pas comment restreindre le contenu à l'aide de champs et de modèles personnalisés. Voici ce que je fais:

  1. J'utilise l'incroyable plugin "Advanced Custom Fields" (la version pro en vaut bien le coût, mais le plugin gratuit fonctionnera très bien à cet effet). https://wordpress.org/plugins/advanced-custom-fields/

  2. Dans les paramètres du plug-in ACF, je crée un champ personnalisé qui correspond à une case à cocher intitulée "Restricted?". et l'appliquer à toutes les pages. Ainsi, lorsque je crée ou édite une page, je peux cocher la case si je le souhaite uniquement pour les utilisateurs connectés.

  3. J'ai modifié mon fichier de modèle stock page.php fourni avec mon thème pour ajouter une vérification de ce champ (contient-il une valeur ou pas, par exemple, est-il coché?), Si la réponse est oui, le I appelez le modèle content-page-restricted, si la réponse est non, il utilise le modèle normal content-page - voici mon code:

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $restrict = get_field('restricted'); if($restrict) { get_template_part( 'content', 'page-restricted' ); } else { get_template_part( 'content', 'page' ); } endwhile; endif; ?>

  4. J'ai copié le modèle content-page.php dans un nouveau modèle appelé content-page-restricted.php, que j'ai ensuite modifié pour ajouter un contrôle permettant de voir si l'utilisateur est connecté. Si ce n'est pas le cas, j'affiche un message pour me connecter. ou inscrivez-vous avec un lien vers notre page d'inscription, s'ils sont connectés, ils verront le contenu. Voici mon code pour cela:

    <?php if ( !is_user_logged_in() ) { echo'<div id="signupMssg">Please <a class="fancybox-inline" href="#fancyboxID-2">Login</a> or <a href="../Signup">Sign Up</a>'; echo '<div style="display:none;"><div id="fancyboxID-2">'; echo do_shortcode('[displayLogin]'); echo '</div></div></div>'; } else if ( is_user_logged_in() ) { // Follow the normal Page stuff here ?>

La substance fancybox est là car j’affiche le formulaire de connexion dans une superposition contextuelle s’ils cliquent sur le mot "Connexion".

J'espère que cela aide, je trouve que c'est un moyen simple de restreindre le contenu qui fonctionne mieux que d'utiliser des pages "privées" qui nécessitent un mot de passe commun ....

4
Trisha