web-dev-qa-db-fra.com

Inscriptions restreintes ou suppression de possibilité de modifier votre mot de passe/email

Je développe un WP site qui répertorie les propriétés coûteuses (villas, penthouses, etc.) à louer. Mon client a un accord avec certaines écoles pour répertorier certaines propriétés bon marché exclusivement pour leurs étudiants. Il a précédemment (dans son site html codé à la main) un nom d’utilisateur + mot de passe qu’il donne aux écoles, pour donner à leurs étudiants (la section des locations d’étudiants étant contrôlée par htaccess).

Pour leur nouveau site épatant WP, ils ne veulent pas d'enregistrement ouvert/public, car les propriétés bon marché sont destinées à des élèves en particulier et non au grand public. Mais ils ne veulent pas non plus modérer chaque inscription. En outre, de nombreux étudiants utiliseront leur propre compte de messagerie privé (par exemple, gmail), de sorte que je ne peux pas limiter l'enregistrement par nom de domaine.

Une chose conviviale à faire serait de créer un seul utilisateur (un "utilisateur de démonstration", si vous voulez), et de donner ce nom d'utilisateur + mot de passe aux écoles pour leurs étudiants - tous les étudiants se connecteraient alors sous cet utilisateur profil.

Cependant, il suffit d’un utilisateur malveillant pour modifier le mot de passe et l’adresse électronique du profil afin de le personnaliser.

En un mot, il me faut un moyen de créer une sous-catégorie d’Abonné, dans laquelle ils peuvent lire des publications privées, mais PAS modifier leur propre profil, et je ne trouve rien de plus "atomique" que la fonctionnalité "Lire", qui semble d'inclure à la fois "lire les messages" et "modifier votre propre profil".

Maintenant, je peux penser à faire cela dans WP, mais je ne sais pas si cela fonctionnera (ou si cela est possible) et quelle serait la "meilleure pratique".

1) Utiliser un plugin du gestionnaire de capacités - Je n’en ai pas trouvé qui offre la possibilité de désactiver "Modifier votre profil". Ouvert aux suggestions.

2) Supprimez le menu administrateur de User SubPanel et redirigez-le vers le serveur après la connexion.

3) Une sorte de plugin "Demo User"?

4) L’autre alternative est de restreindre ou sinon de protéger les inscriptions par un mot de passe, mais comment le faire efficacement, sans trop de soucis du côté modérateur/administrateur, et sans trop de perte d’utilisabilité du côté de l’utilisateur final?

Au départ, je pensais que l’enregistrement public était activé, mais qu’il suffisait de contrôler la page d’enregistrement/de connexion avec un nom d’utilisateur + un mot de passe que nous émettions, mais (a) ce serait ennuyeux, car vous devez essentiellement "enregistrer in "deux fois (une pour Apache et une autre pour wordpress), et (b) j'ai essayé d'utiliser htaccess via le plugin Password Protector de AskApache, mais je ne pouvais pas contourner le problème permalink/404, malgré le suivi de l'exemple et l'insertion de ErrorDocument dans htaccess. fichier, et un fichier error.html vide à la racine.

Donc là vous l'avez ... mon l33t g00gl3 sk1llz m'ont échoué. Mon wordpress-fu n'est pas fort.

1
Amanda

Cette solution est purement esthétique, car elle masque simplement via jQuery les champs de la page de profil de l'utilisateur, mais cela supprime la possibilité pour l'utilisateur de changer le mot de passe (l'administrateur verra toujours les champs et peut changer à tout moment). Ajoutez ceci au fichier functions.php de votre thème et vous avez terminé.

add_action( 'edit_user_profile', 'hide_profile_options');
add_action( 'show_user_profile', 'hide_profile_options');

function hide_profile_options() {
    if( !current_user_can('install_themes') ) : ?>
    <script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery("#your-profile h3:contains('Personal Options') + table").remove();
        jQuery("#your-profile h3:contains('Personal Options')").remove();
        jQuery("#your-profile h3:contains('About Yourself') + table").remove();
        jQuery("#your-profile h3:contains('About Yourself')").remove();
    });
    </script>
<?php
    endif;
}

Vous pouvez également masquer les autres blocs, si vous le souhaitez ... dupliquez simplement les lignes et modifiez le contenu de l'h3 ...

Pour ce que vous décrivez, masquer l’ensemble du sous-panneau admin du profil utilisateur peut également fonctionner, mais c’est un peu plus précis.

1
somatic

c'était une fonction intéressante avec jQuery et qui a fonctionné ... mais le problème est que les blocs de code sont toujours présents, donc lorsque vous "visualisez la source", toutes les tables bio sont toujours là ... un éditeur DOM comme Firebug qui pourrait probablement encore manipuler les champs étant donné qu’ils apparaissent dans le source de la vue de la page .. ?? ..

1
user3858

si vous ne souhaitez pas que les utilisateurs modifient leurs profils, créez-les et modifiez les autorisations sur la table des utilisateurs mysql.

de cette manière, vous serez le seul à pouvoir créer des utilisateurs et mettre à jour votre profil.

c'est assez simple, ne nécessite aucun plugin

espérons que je réponds à votre question

0
mireille raad

Il s'avère que la solution la plus simple à la fin consistait à utiliser l'un des plug-in "Invite Code", de sorte que seules les personnes possédant un code d'invitation spécifié puissent s'inscrire. J'ai fini par utiliser Pie Register.

0
Amanda